Android:使用Handler更新UI

时间:2013-05-02 07:36:31

标签: android android-activity handler

我实现了一个由四个活动(A,B,C,D)组成的Android应用程序。

A呼叫B; B呼叫C和C呼叫D。

活动A实现了一个处理程序

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
                        }
                 }
         }
   };

活动D可以使用hadler发送消息。

问题是:

如果从活动D发送消息时,活动A是否在后台,会发生什么?

如果在通过处理程序接收消息之前销毁了活动A,会发生什么?

2 个答案:

答案 0 :(得分:5)

使用自定义BroadcastReceiver

将此内容写入 ActivityD.java

 Intent intent = new Intent();
 intent.putExtra("message","hi");
 intent.setAction("com.android.activity.SEND_DATA");
 sendBroadcast(intent); 

将此内容写入 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);
  }
};

<强>更新

现在注册Receiver

 registerReceiver(mMessageReceiver,
  new IntentFilter("com.android.activity.SEND_DATA"));   

答案 1 :(得分:1)

为避免您提到的问题,请使用Broadcast messaging system