android多線程應用

1.簡單的異步操作:

new Thread(new Runnable() {//開啓一個新線程(執行耗時操作)

                @Override

                public void run() {

                    // TODO Auto-generated method stub

                    Message message = new Message();

                    message.what = UPDATE_TEXT;

                    handler.sendMessage(message);

                }

            }).start();   

 private Handler handler = new Handler(){//:與其他線程協同工作,接收其他線程的消息並通過接收到的消息更新主UI線程的內容

    @Override

        public void handleMessage(Message msg){

            switch(msg.what){

            case UPDATE_TEXT:

                text.setText("Nice to meet you");

                break;

            default:

                break;

            }

        }

    };

2.輪詢:爲了實現數據實時跟新

//加載對話頁面數據

loadData(false);

//開始輪詢獲取對話和粉絲數,每隔一秒重新加載一次

handler.postDelayed(loopGetTalk,1000);


Runnable loopGetTalk=new Runnable() {

@Override

public void run() {

loadData(false);

handler.postDelayed(new Runnable() {//異步查詢,避免數據重複

@Override

public void run() {

getUnReadFans();

}

}, 200);

handler.postDelayed(this,1000);

}

};

3.AsyncTask與handler的聯合使用

if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) {

task.executeOnExecutor(Executors.newCachedThreadPool(),args);

}else {

task.execute(args);}

AsyncTask<Object, Integer, Object> task =new AsyncTask<Object, Integer, Object>() {

@Override

protected Object doInBackground(Object... arg0) {//相當於一個Thread(線程)(執行耗時操作)

return result;

}

@Override

protected void onPostExecute(Object result) {//處理在線程中處理完的結果

super.onPostExecute(result);

hd.sendMessage(hd.obtainMessage(taskType, result));

}

};




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章