Android sendBroadcast-等待BroadcastReceiver完成
我在Android应用程序中使用了一个Android sendBroadcast-等待BroadcastReceiver完成,android,android-intent,google-cloud-messaging,Android,Android Intent,Google Cloud Messaging,我在Android应用程序中使用了一个BroadcastReceiver,它只包含以下代码: public BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { GcmIntentService.isHandled = true; Toast.makeText(c
BroadcastReceiver
,它只包含以下代码:
public BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
GcmIntentService.isHandled = true;
Toast.makeText(context, "broadcast receiver test", Toast.LENGTH_SHORT).show();
}
}
我使用此接收器来确定我的活动是否正在运行,并在列表视图中执行一些更新,而无需GCMinentService生成任何通知
到目前为止,代码很简单,只创建了一条toast消息,因此我无法在调用sendBroadcast
后立即从gcminentservice.isHandled
捕获布尔值
是否可以以任何方式确定接收器的代码是否已完成运行。我知道sendBroadcast
是一个异步调用,到目前为止,我正在使用Thread.sleep(1000)
来等待isHandled值,但如果有更可靠的方法来实现这一点,那就太好了
有什么想法吗?你的问题可以分为两部分: 1.如何知道是否有接收器实际接收到广播 2.接收方应如何通知服务消息已被处理 似乎很难通过标准的意图api实现第一个目标,相反,我建议您可以尝试“观察者模式”
您可以在应用程序中创建一个全局对象,并使活动实现,在onCreate()中注册自身,在onDestory()中注销。在服务中,您可以检查是否有活动正在运行,然后简单地通知它。您在哪里调用
Thread.sleep()
?在扩展IntentService
的myGCMinentService
类中,需要显示更多代码。您的体系结构不清楚,您的问题也不清楚。