作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 Activity 的 onResume 方法中设置了一个简单的 BroadcastReceiver。
@Override
protected void onResume() {
super.onResume();
LocalBroadcastManager.getInstance(this).registerReceiver(mNotificationReceiver, new IntentFilter(QuickstartPreferences.NEW_NOTIFICATION));
}
我在 onPause 上注销接收器:
@Override
protected void onPause() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(mNotificationReceiver);
}
我有一个后台服务可以发送广播消息给这个:
Intent newNotification = new Intent(QuickstartPreferences.NEW_NOTIFICATION);
newNotification.putExtra("title", data.getString("title"));
LocalBroadcastManager.getInstance(this).sendBroadcast(newNotification);
我的问题是,如果后台服务在Activity没有打开的时候广播消息,现在Activity恢复的时候,是否能够接收到广播的消息呢?如果不是,如何在Activity未打开时维护一个队列来存储广播消息?
最佳答案
LocalBroadcast 已排队但未持久化。在您的 onPause() Activity 中,您取消注册了接收器,因此您无法接收进一步的广播。 sendBroadcast() 将检查接收器,如果没有接收器,它将返回 false 以指示失败。
如果您希望始终收到通知,请尝试在应用程序级别而不是 Activity 级别注册广播。
关于Android:BroadcastManager 有队列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34554370/
我在 Activity 的 onResume 方法中设置了一个简单的 BroadcastReceiver。 @Override protected void onResume() { supe
我是一名优秀的程序员,十分优秀!