安卓:使用处理程序更新UI [英] Android: Updating UI using Handler

查看:102
本文介绍了安卓:使用处理程序更新UI的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我实现了一个Android应用程序,它包括四个活动(A,B,C,D)。

I implemented an Android Application that consists of four activity (A,B,C,D).

一个呼叫B; B调用C和C调用ð。

A calls B; B calls C and C calls D.

活性的实现了处理程序

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可使用哈德勒发送messagge。

The Activity D can send a messagge using the hadler.

现在的问题是:

如果活性的是在后台,当消息从活动ð发送会怎么样?

What happens if the Activity A is in background when message is sent from Activity D?

如果活动A通过处理程序接收消息之前被销毁该怎么办?

What happens if the Activity A is destroyed before receiving the message through the handler?

推荐答案

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

更新

现在注册接收

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

这篇关于安卓:使用处理程序更新UI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆