Android:使用Handler更新UI

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会发生什么?

Ron*_*hta 5

使用自定义 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)