[英]An interesting way of communication between two activities
第一步:
public class MyHandler extends Application {
private Handler handler = null;
public Handler getHandler() {
return handler;
}
public void setHandler(Handler handler) {
this.handler = handler;
}
}
下一步:在活動A中:
MyHandler myHandler = (MyHandler)getApplication();
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if(msg.what == 0x123)
progressDialog.dismiss();
}
};
myHandler.setHandler(handler);
在活動B中:
MyHandler myHandler = (MyHandler)getApplication();
Handler handler = myHandler.getHandler();
handler.sendEmptyMessage(0x123);
盡管兩個myHandler的引用相同,但是我們使用(MyHandler)將Application更改為MyHandler。Application沒有處理程序字段,為什么應用程序可以保留字段處理程序? 因為我認為在活動B中, MyHandler myHandler = (MyHandler)getApplication();
無法獲取字段處理程序。
多態性。
引用的類型為Application
並不一定意味着引用的對象是。 該對象可以是Application
或的任何子類Application
。
寫(MyHandler)
值之前是鑄件 ,並且簡單地轉換基准 ,而不是對象 。 在運行時檢查MyHandler
的有效性,如果對象不是MyHandler
或其子類,則拋出ClassCastException
(在您的情況下,檢查通過,因此沒有問題)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.