GVi*_*i82 1 android handler android-activity
我实现了一个由四个活动(A,B,C,D)组成的Android应用程序.
A呼叫B; B呼叫C和C呼叫D.
活动A实现了一个Handler
Handler handler=new Handler(){
public void handleMessage(Message msg){
Bundle bundle = new Bundle();
bundle = msg.getData();
String key = bundle.getString("Changed");
if(key.compareTo("NotificationType") == 0){
String completeStr = bundle.getString(key);
if(completeStr.compareTo("Message") == 0)
{
// update UI of Activity A
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
活动D可以使用hadler发送消息.
问题是:
如果从活动D发送消息时活动A处于后台,会发生什么?
如果在通过处理程序接收消息之前销毁活动A会发生什么?
使用自定义 BroadcastReceiver
在ActivityD.java中写下这个
Intent intent = new Intent();
intent.putExtra("message","hi");
intent.setAction("com.android.activity.SEND_DATA");
sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)
在ActivityA.java中写下这个
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Extract data included in the Intent
String message = intent.getStringExtra("message");
Log.d("receiver", "Got message: " + message);
}
};
Run Code Online (Sandbox Code Playgroud)
更新
现在注册 Receiver
registerReceiver(mMessageReceiver,
new IntentFilter("com.android.activity.SEND_DATA"));
Run Code Online (Sandbox Code Playgroud)