程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> android-Android UI耗時問題處理

android-Android UI耗時問題處理

編輯:編程綜合問答
Android UI耗時問題處理

問題描述:UI中btn的一個響應有耗時操作,另起線程來執行,UI依然有卡頓

代碼描述如下:
public class MyActivity extends Activity {

Button btnSend;
protected void onCreate(Bundle savedInstanceState) {
    .....
    btnSend=(Button) findViewById(R.id.btn_send);
    btnSend.setOnclickListener(mListener);
}

OnClickListener mListener=new new View.OnClickListener() {

        @Override
        public void onClick(View v) {
         new Thread(sendable).start();  
        }
}

Runnable sendable = new Runnable() {
    @Override
    public void run() {
        String data="data";
        sendRemote(data);
    }
}

/***因為具體的發送方法在服務裡,所以此處傳遞消息給
****服務處理,發送函數是一個耗時操作,發送之後等待回復或等至超時***/
private void sendRemote(String strData){    
    Intent iSend=new Intent("send");    
    iSend.putExtra("data", msg);
    startService(iSend);
}

}
在這種情況下會有一個明顯的卡頓,我的疑問是:
1、另起線程並沒有完全將耗時程序從UI中剝離開來嗎?
2、即使未剝離開,UI線程啟動服務的操作也要一直等到 服務按要求啟動並執行相應的步驟(此處為發送信息)之後才算完成嗎?要不然也不應該卡頓啊

求高手指點,謝謝

最佳回答:


問題比較明顯,肯定不是出在你貼出來的代碼中,請檢查你啟動的service的oncreate函數,看裡面是不是做了耗時操作,
service也是運行於UI線程,請在service的oncreate中創建thread做耗時操作

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved