android - 使用广播 Intent/广播接收器将消息从服​​务发送到 Activity

标签 android android-intent broadcastreceiver

所以我了解(我认为)广播 Intent 和接收消息给他们。

所以现在,我的问题/我无法解决的是如何将消息从接收器的 onReceive 方法发送到 Activity 。假设我有一个这样的接收器:

public class ReceiveMessages extends BroadcastReceiver 
{
@Override
   public void onReceive(Context context, Intent intent) 
   {    
       String action = intent.getAction();
       if(action.equalsIgnoreCase(TheService.DOWNLOADED)){    
           // send message to activity
       }
   }
}

如何向 Activity 发送消息?

我是否必须在要向其发送消息的 Activity 中实例化接收器并以某种方式对其进行监视?或者是什么?我理解这个概念,但不是真正的应用程序。

任何帮助都会非常棒,谢谢。

汤姆

最佳答案

已编辑更正了注册/注销 BroadcastReceiver 的代码示例,并删除了 list 声明。

ReceiveMessages定义为Activity中的一个内部类,它需要监听来自Service的消息。

然后,声明类变量如...

ReceiveMessages myReceiver = null;
Boolean myReceiverIsRegistered = false;

onCreate() 中使用 myReceiver = new ReceiveMessages();

然后在onResume()...

if (!myReceiverIsRegistered) {
    registerReceiver(myReceiver, new IntentFilter("com.mycompany.myapp.SOME_MESSAGE"));
    myReceiverIsRegistered = true;
}

...并在 onPause()...

if (myReceiverIsRegistered) {
    unregisterReceiver(myReceiver);
    myReceiverIsRegistered = false;
}

Service中创建并广播Intent...

Intent i = new Intent("com.mycompany.myapp.SOME_MESSAGE");
sendBroadcast(i);

就是这样。使“操作”对您的包/应用程序唯一,即 com.mycompany... ,如我的示例中所示。这有助于避免其他应用或系统组件可能会尝试处理它。

关于android - 使用广播 Intent/广播接收器将消息从服​​务发送到 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7276537/

相关文章:

安卓磨损 : Starting a service on Handheld

android - 使用可绘制对象(背景)在回收站 View 中屏蔽项目

java - 尝试在指定时间后更改 Activity 后出错 - "Unfortunately, Application has stopped"

Android Intent 打开 "Mass Storage Activity"

android.app.IntentReceiverLeaked : Activity com. example.brown

android - 使用 BroadcastReceiver Intent 查询 SpeechRecognizer 支持的语言

android - 三星 Galaxy 平板电脑不允许将 float 输入到 "number"类型的输入中

android - 如何在每个选项卡下添加 Activity ?

android.hardware.action.NEW_PICTURE 被触发了两次

android - 在 BOOT_COMPLETED 上安排任务