在应用程序标签的清单中,我有:
<receiver
android:name=".MyC2dmReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<!-- Receive the actual message -->
<intent-filter>
<action
android:name="com.google.android.c2dm.intent.RECEIVE" />
<category
android:name="com.my.app" />
</intent-filter>
<!-- Receive the registration id -->
<intent-filter>
<action
android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category
android:name="com.my.app" />
</intent-filter>
</receiver>
我收到了那样的话
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION")) {
handleRegistration(context, intent);
} else if (intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")) {
handleMessage(context, intent);
}
}
当我的应用处于开启状态或后台时onReceive
方法被触发,但是当我使用AdvancedTaskKiller杀死应用时,onRecived
停止接收。为什么呢?
为什么Android无法启动接收器?我需要清单吗?
答案 0 :(得分:1)
为什么?
如果您使用的是Android 3.1或更高版本,那是因为您的应用程序已进入停止状态。如果用户通过“设置”应用程序强制停止,也会发生这种情况。在用户再次手动启动您的应用之前(例如,点击启动器中的图标),您的BroadcastReceivers
都不会有效。