【问题标题】:android - update specific activity UI from onReceiveandroid - 从 onReceive 更新特定的活动 UI
【发布时间】:2015-03-11 20:16:44
【问题描述】:

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

我有第三个一直在运行的活动,名为 HomeActivity,我想通过 onReceive 方法将一些文本发布到 HomeActivity 的 UI。

可能吗?我知道context参数是引发onReceive的activity的上下文,但是我想访问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 
    }

}

有什么想法吗?提前致谢

【问题讨论】:

    标签: android android-asynctask broadcastreceiver android-context


    【解决方案1】:

    您想根据广播接收器的onReceive 中收到的内容更改跑步活动中的文本吗?正确的?一种方法是您可以使用LocalBroadcast。见LocalBroadcast Manager。 至于如何实现,how to use LocalBroadcastManager? 上有一个很好的例子。

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

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

    【讨论】:

    • 感谢您的回答!假设我在其他活动之一中从 postExecute 提出 onReceive(并且在 onReceive 中我将 LocalBroadcast 发送到 Home 活动)。调用 LocalBroadcast 后的一行代码,我完成了另一个活动,只剩下 HomeActivity,我会看到 HomeAtivity 中的文本吗?这算作最前沿/活跃的活动吗?谢谢
    • 直到你没有杀死 HomeActivity,你应该得到本地广播......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2011-06-17
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    相关资源
    最近更新 更多