[英]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.