作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
所以我了解(我认为)广播 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/
我是一名优秀的程序员,十分优秀!