我正在研究讨论图片的聊天应用程序。
当我收到c2dm消息时,有效负载包含该消息和一个md5,该md5标识该消息所涉及的图片。当具有匹配的md5的ChatActivity在前景中时,我只想播放声音。如果不是,我想向通知栏添加通知。
这与whatsapp的行为相同。如何实现呢?
最佳答案
除了使现有清单为C2DM消息注册ChatActivity
之外,还让BroadcastReceiver
注册BroadcastReceiver
来接收C2DM消息。让IntentFilter
中的ChatActivity
使用的registerReceiver()
对setPriority()
使用正值,默认值为0。在registerReceiver()
或onResume()
中使用onStart()
,在unregisterReceiver() cc>或onPause()
。
结果是,当C2DM消息到达时,如果onStop()
位于前台,则由于优先级较高,它将首先获取该消息。它可以检查消息是否有关其图像。如果是,ChatActivity
的ChatActivity
可以调用BroadcastReceiver
,以防止您的标准优先级清单注册接收器获得广播。因此,如果清单注册的接收器确实得到了广播,则您知道前景中没有相关的abortBroadcast()
,并且可以提高ChatActivity
。
Here is a sample app演示了大部分内容。广播来自应用程序本身,而不是C2DM,但其余结构几乎相同。
关于android - Android:确定是否收到广播,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11819384/