handler handler = new handler();
runable update = new runnable(){
publicvoid run(){
system.out.println(「update」);
handler.postdelayed(update,3000); //3秒後將update執行緒新增到佇列中
handler.post(update); //將update執行緒新增到佇列中,實際上是執行update中的run方法,而不是以start方式啟動執行緒,所以是在同乙個執行緒中執行,而不是新啟動乙個執行緒。
可以通過thread.currentthread().getid();來判斷是否同乙個執行緒
handler.removecallbacks(update); //
handler handler = new handler(){
publicvoid handlemessage(message msg){
…..msg.arg1
…..msg.arg2
(string)msg.obj
message msg = handler.obtainmessage();
msg.arg1 = 1;
msg.arg2 = 1;
msg.obj = 「abc」
handler.sendmessage(msg); //將msg物件加入訊息佇列當中,handlemessage方法就會接收到
使用新執行緒來處理訊息
//生成乙個handlerthread物件,實現了使用looper來處理訊息佇列的功能
handlerthread handlerthread = newhandlerthread(「handler_thread」);
//在使用handlerthread的getlooper()方法之前,必須先呼叫該類的start(),否則getlooper()取出的為空
handlerthread.start();
myhandler myhandler =newmyhandler(handlerthread.getlooper());
message msg = nyhandler.obtainmessage();
msg.sendtotarget(); //將msg傳送到目標物件,所謂的目標物件就是生成該msg物件的handler物件
class myhandler extends handler{
publicmyhandler(){ //在main執行緒中執行
publicmyhandler(looper looper)
super(looper); //指定myhandler在looper這個執行緒中執行,而不是main執行緒執行
publicvoid handlermessage(message msg){
通過message來傳送大量資料時,應該使用setdata(bundle bundle)
bundle b = new bundle();
b.putint(「age」,19);
b.putstring(「name」, 「jhon」);
msg.setdata(b);
msg.sendtotarget();
取資料時:
bundle b = msg.getdata();
int age = b.getint(「age」);
string name = b.getstring(「name」);
Android學習筆記之fragment
fragment 二 有什麼用?一般介面設計 通過fragment實現 三 fragment怎麼用 生命週期方法被呼叫契機 新建乙個類繼承fragment或者fragment的派生類 listfragment preferencefragment 2.fragment新增使用者介面 引數 注 如果你...
Android學習筆記之Intent
例如 startactivity new intent mainactivity.this,myaty.class 使用startactivity方法後出現at dalvik.system.nativestart.main native method 這一錯誤的原因是因為忘了在androidmani...
android學習筆記之Activity
建立activity 的要點 乙個activity 就是乙個類,並且這個類要繼承activity 需要複寫oncreate方法 每乙個activity 都需要在androidmanifest.xml 中進行配置,包含filter 的為主activity。為activity新增必要的控制項 activ...