我正在构建一个使用 Google Cloud Messaging 接收推送通知的操作。
这涉及几个值得注意的组件,即:
WakefulBroadcastReceiver
用于接收来自 GCM 的消息。- 一个
IntentService
在收到 GCM 事件时被通知。
正如我确信许多应用程序的情况一样,我想采用不同的方法来判断应用程序在前台有 Activity 时与应用程序没有时在前台的应用程序。
如果应用程序未激活,我想将通知发布到通知抽屉,如果应用程序处于 Activity 状态,则只需将事件转发到前台 Activity 。
这有设计模式吗?我应该如何确定应用程序是在前台还是在后台?
最佳答案
您可以按照 this blog post 中概述的方法进行操作您在 Activity
中创建一个 BroadcastReceiver
并具有正优先级(即高于默认的 0
),它会拦截特定操作,然后调用 abortBroadcast
- 这会处理应用打开的情况。然后,您还在您的 list 中注册一个 BroadcastReceiver
,它处理相同的操作但具有默认优先级 - 如果应用程序未打开并创建系统通知,这是回退。
然后您使用 sendOrderedBroadcast()
将您的广播按优先顺序发送给所有已注册的接收者。如果 Activity 是开放的,第一个将处理它。否则,它将默认为另一个并创建一个通知。
关于android - 如果应用程序在前台,则替代操作的设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22001844/