先把效果貼出來(lái),我點(diǎn)擊第一個(gè)button讓主線程開(kāi)始發(fā)送消息墩莫,點(diǎn)擊第二個(gè)button時(shí)將handler移除芙委,我沒(méi)實(shí)現(xiàn),想實(shí)現(xiàn)的可以自己去操作?袂亍灌侣!
Paste_Image.png
Paste_Image.png
private Button button1;
private Button button2;
/**
* 主線程的handler
*/
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
//隨便發(fā)送一個(gè)空的消息,延遲3秒發(fā)送
Message message = new Message();
System.out.println("Main Thread");
threadHandler.sendMessageDelayed(message, 3000);
};
};
/**
* 子線程的hanlder
*/
private Handler threadHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.threadtomain_act);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
//使用HandlerThread
HandlerThread thread = new HandlerThread("Thread Handler");
thread.start();
//創(chuàng)建一個(gè)新的handler裂问,用于子線程中侧啼,給子線程創(chuàng)建一個(gè)looper對(duì)象
threadHandler = new Handler(thread.getLooper()) {
public void handleMessage(android.os.Message msg) {
//隨便發(fā)送一個(gè)空的消息牛柒,延遲3秒發(fā)送
Message message = new Message();
System.out.println("Thread");
handler.sendMessageDelayed(message, 3000);
};
};
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1://向子線程發(fā)送消息
handler.sendEmptyMessage(1);
break;
case R.id.button2://移除當(dāng)前消息
handler.removeMessages(1);
break;
}
}