Android中Handler常用方法

來源:互聯網
上載者:User

 package com.example.testhandler;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
//Handler常用方法:
//1 post()
//2 postDelayed()
//3 sendMessage()
//4 handleMessage()
public class MainActivity extends Activity {
Runnable updateRunnable;
private final int CANCEL_RUNNABLE=99;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//以下為Handler第一種:根據Message的what不同做出相應的處理
if (msg.what==1) {
System.out.println("收到訊息");
}
//以上為Handler第一種:根據Message的what不同做出相應的處理

//以下為:Handler第二種:handler.postDelayed(Runnable, delayMillis)
if (msg.what==CANCEL_RUNNABLE) {
System.out.println("當前訊息msg.what="+msg.what);
//取消Runnable的執行
removeCallbacks(updateRunnable);
}
//以上為:Handler第二種:handler.postDelayed(Runnable, delayMillis)
}
};

/////////////////////////////////////////////////////////////////////////////////////////////

//以下為:Handler第一種:發出一個Message
new Thread(){
@Override
public void run() {
Message message1=new Message();
message1.what=1;
message1.obj=new Object();
//handle發出一個Message對象
//為方便測試以將該句子注釋
//handler.sendMessage(message1);
super.run();
}
};
//以上為:Handler第一種:發出一個Message

//以下為:Handler第二種:handler.postDelayed(Runnable, delayMillis)
//發出的Runnable會在Handler所綁定線程中延遲一定時間執行
updateRunnable = new Runnable() {
public void run() {
for (int i = 5; i < 15; i++) {
System.out.println("Runnable中的i="+i);
}
}
};
//handle發出一個Runnable對象
//為方便測試以將以下兩句注釋
//不能使用handler.post(updateRunnable);
//應該使用handler.postDelayed(updateRunnable, 5000);
//然後立馬發出一個訊息,這樣就可以在handleMessage中
//調用removeCallbacks()方法
handler.postDelayed(updateRunnable, 1000);
handler.sendEmptyMessage(CANCEL_RUNNABLE);
//以上為:Handler第二種:handler.postDelayed(Runnable, delayMillis)


//以下為:Handler第三種:handler.post(Runnable)
//發出的Runnable會在Handler所綁定線程中立馬執行
//為方便測試以將以下一句代碼注釋
//handler.post(updateRunnable);
//以上為:Handler第三種:handler.post(Runnable)
}

 

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.