生活随笔
收集整理的這篇文章主要介紹了
Handler总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Handler學習小結,算是搞清楚了,得記下來
Handler主要用于異步消息的處理:當發送一個消息之后,首先進入一個消息隊列,發送消息的函數即可返回,而另外一個部分逐個的在消息隊列中將消息取出,然后對消息進行出來,就是發送消息和接收消息不是同步的處理。這種機制通常用來處理相對好是比較長的操作。(就如post方法是講Runnable對象添加到主線程中,通俗的說:這里的代碼中主要用Handler通知主線程,在主線程中處理異步結果,當線程中耗時任務完成后,例如數據準備,就通知主線程更新(如:更新UI),Handler的hand)
Handler 常用方法:
post(Runnable,long)
postDelayed(Runnable,long);
sendEmptyMessage(int What);
sendMessage(Message);
sendMessageAtTime(Message,long);
sendMessageDelayed(Message,long);
以上post方法允許你安排一個Runnable對象到主線程隊列 中,
sendMessage 方法,允許你安排一個帶數據的Message對象到隊列中,等待更新
Android代碼 ?
package?com.handler.test; ????import?android.app.Activity; ??import?android.os.Bundle; ??import?android.os.Handler; ??import?android.os.Message; ??import?android.util.Log; ??import?android.view.View; ??import?android.view.View.OnClickListener; ??import?android.widget.Button; ??import?android.widget.TextView; ????public?class?Handler1Activity?extends?Activity?{ ??????private?Button?button?=?null; ??????private?TextView?textview?=?null; ??????@Override ??????public?void?onCreate(Bundle?savedInstanceState)?{ ??????????super.onCreate(savedInstanceState); ??????????setContentView(R.layout.main); ??????????button?=?(Button)?findViewById(R.id.button); ??????????textview?=?(TextView)?findViewById(R.id.textview); ??????????button.setOnClickListener(new?OnClickListener()?{ ?????????????? ??????????????@Override ??????????????public?void?onClick(View?v)?{ ??????????????????new?Thread(thread).start(); ??????????????????try?{ ??????????????????????Thread.sleep(2000); ??????????????????????Log.i("Handler1Activity",?"主線程"); ??????????????????}?catch?(InterruptedException?e)?{ ??????????????????????//?TODO?Auto-generated?catch?block ??????????????????????e.printStackTrace(); ??????????????????} ??????????????} ??????????}); ??????} ?????? ??????private?Handler?handler?=?new?Handler(){ ????????????@Override ??????????public?void?handleMessage(Message?msg)?{ ??????????????if(msg.what==1){ ??????????????????textview.setText("處理完成"); ??????????????????System.out.println("handler"+Thread.currentThread().getId()); ??????????????} ??????????} ??????}; ?????? ??????private?Thread?thread?=?new?Thread(){ ????????????@Override ??????????public?void?run()?{ ??????????????//這里處理異步消息 ??????????????Log.i("Handler1Activity",?Thread.currentThread().getId()+"異步處理"); ??????????????handler.sendEmptyMessage(1); ??????????} ??????}; ??}?? package com.handler.test;import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class Handler1Activity extends Activity {private Button button = null;private TextView textview = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);button = (Button) findViewById(R.id.button);textview = (TextView) findViewById(R.id.textview);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {new Thread(thread).start();try {Thread.sleep(2000);Log.i("Handler1Activity", "主線程");} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}});}private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {if(msg.what==1){textview.setText("處理完成");System.out.println("handler"+Thread.currentThread().getId());}}};private Thread thread = new Thread(){@Overridepublic void run() {//這里處理異步消息Log.i("Handler1Activity", Thread.currentThread().getId()+"異步處理");handler.sendEmptyMessage(1);}};
}
?這里的
Android代碼 ?
System.out.println("handler"+Thread.currentThread().getId());//handler1??
轉載于:https://blog.51cto.com/haiyang714/742617
總結
以上是生活随笔為你收集整理的Handler总结的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。