android - 从onReceive更新特定活动UI

时间:2015-03-11 20:16:44

标签: android android-asynctask broadcastreceiver android-context

我有一个BroadcastReceiver,onReceive是在两个不同的asyncTasks中的两个不同的postExecute方法中调用的。

我的第三个活动一直在运行,名为 HomeActivity ,我想从onReceive方法向HomeActivity的UI发布一些文字。

有可能吗?我知道context参数是引发onReceive的活动的上下文,但我想访问HomeActivity的UI。

以下是代码

public class MyBroadcastReceiver extends BroadcastReceiver {


    @Override
    public void onReceive(Context context, Intent intent) {
        // here I want to publish some text to the HomeActivity 
    }

}

任何想法?提前谢谢

1 个答案:

答案 0 :(得分:1)

您想根据在BroadcastReceiver的onReceive中收到的内容更改正在运行的活动中的文字吗?对?一种方法是您可以使用LocalBroadcast。见LocalBroadcast Manager。 关于如何实现,how to use LocalBroadcastManager?有一个很好的例子。

  

LocalBroadcast Manager是一个帮助程序,用于注册和发送Intent广播到进程中的本地对象。您播放的数据不会离开您的应用,因此不必担心泄露私人数据。

您的HomeActivity可以注册此本地广播。从MyBroadcastReceiver LocalBroadcast发送onReceive Activity(说嘿,我收到了一条消息。你想现在做什么活动)。然后在{{1}}内,您可以收听广播。这样,如果活动处于最前面/处于活动状态,它将接收广播,否则它将赢得。因此,每当您收到本地广播时,如果活动开放,您可以更改文本等。