Android中Message機制的靈活應用

2021-05-26 00:32:31 字數 2754 閱讀 7023

非原創

packagecom.android.messageexample;   

import

importandroid.content.context;   

importandroid.graphics.color;   

importandroid.os.bundle;   

importandroid.os.handler;   

importandroid.os.looper;   

importandroid.os.message;   

importandroid.util.log;   

importandroid.view.view;   

importandroid.view.view.onclicklistener;   

importandroid.widget.button;   

importandroid.widget.linearlayout;   

importandroid.widget.textview;   

public

classmessageexampleextendsactivityimplementsonclicklistener    

//implement the onclicklistener inte***ce

@override

public

voidonclick(view v)    

break;   

case

106:   

finish();   

break;   

}   

}   

classeventhandlerextendshandler   

publiceventhandler()    

public

voidhandlemessage(message msg)    

}   

}   

//nolooperthread

classnolooperthreadextendsthread   

else

mnolooperthreadhandler.removemessages(0

);   

if(false== postrunnable)else

});     

}   

}   

}   

//ownlooperthread has his own message queue by execute looper.prepare();

classownlooperthreadextendsthread   

else

mownlooperthreadhandler.removemessages(0

);   

//給自己傳送訊息

message m = mownlooperthreadhandler.obtainmessage(3

, 1, 1

, obj);   

mownlooperthreadhandler.sendmessage(m);   

looper.loop();   

}   

}   

//receivemessagethread has his own message queue by execute looper.prepare();

classreceivemessagethreadextendsthread   

};   

looper.loop();   

}   

}   

}  

使用looper.mylooper靜態方法可以取得當前執行緒的looper物件。

使用mhandler = new eevnthandler(looper.mylooper()); 可建立用來處理當前執行緒的handler物件;其中,eevnthandler是handler的子類。

使用mhandler = new eevnthandler(looper.getmainlooper()); 可建立用來處理main執行緒的handler物件;其中,eevnthandler是handler的子類。

Android 基於Message的程序間通訊

例項在最後,先簡析原理。1 服務端重要 解析 nullable override public ibinder onbind intent intent getbinder裡面是這樣的 public ibinder getbinder mtarget是什麼?怎麼來的?public messenger...

Message解析流程

message的解析作為乙個共同元件。對應不同格式的msg檔案有不同的實現類來解析。用saxparser.1 final class messageresourcemanager 在start方法中呼叫 啟動載入 messageresourcemanager.load saxmessageresou...

Message和obtainMessage的區別

具體可參考 儘管message的構造器是公開的,但是獲取message物件的最好方法是呼叫message.obtain 或者handler.obtainmessage 這樣是從乙個可 物件池中獲取message物件。這樣就避免了過分new出乙個個message物件造成記憶體開銷。使用 使用new m...