以下是在我的MainActivity中用作BroadcastReceiver的代码
//Initializing our broadcast receiver
mRegistrationBroadcastReceiver = new BroadcastReceiver() {
//When the broadcast received
//We are sending the broadcast from GCMRegistrationIntentService
@Override
public void onReceive(Context context, Intent intent) {
//If the broadcast has received with success
//that means device is registered successfully
if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_SUCCESS)){
//Getting the registration token from the intent
String token = intent.getStringExtra("token");
//Displaying the token as toast
Toast.makeText(getApplicationContext(), "Registration token:" + token, Toast.LENGTH_LONG).show();
//if the intent is not with success then displaying error messages
} else if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_ERROR)){
Toast.makeText(getApplicationContext(), "GCM registration error!", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Error occurred", Toast.LENGTH_LONG).show();
}
}
};
我按照本教程关于GCM
https://www.simplifiedcoding.net/android-push-notification-using-gcm-tutorial/
答案 0 :(得分:11)
通过滑动关闭应用程序(通常称为 轻扫它 )并不能完全杀死应用程序。请查看Android爱好者社区中的answer以获取更详细的说明。你可以看到它被提到:
..它不会直接导致服务停止..
由于GCM通知的监听器为Service
,这实际上意味着您的应用仍有可能继续接收它们,无论它是 被刷掉 强>
虽然滑动某个应用的结果也可能会有所不同,具体取决于它正在运行的设备,但是如上所述,可能会停止/强制停止它或其他停止后台进程。
但是,如果结果是,应用程序被杀死/强制停止,如上面链接的答案中所述:
停止是完全杀死应用程序 - 所有进程都被终止,所有服务已停止,所有通知都被删除,所有警报都被删除等等。
这会导致应用无法接收任何类型的通知,因为它是自3.1版以来为Android设计的,如answer所述:
处于停止状态的应用不会收到广播意图。
停止状态是:
最初安装应用程序时(在用户在应用程序中运行某些内容之前)或 在一次强制停止之后。 您可以在此处找到有关此内容的更多信息:http://developer.android.com/about/versions/android-3.1.html#launchcontrols
希望这有助于以某种方式清除某些事情。干杯! :d
答案 1 :(得分:1)
您可以尝试使用GcmListenerService
当您通过滑出关闭应用程序时,服务仍然在后台激活,您可以接收推送通知。除非用户手动强制停止应用程序设置,否则此服务可以帮助您。