当我的测试智能手机清除缓存时,我的Android应用程序出现了一些问题:我的应用程序不再收到任何消息(更多详细信息here)。
一开始我认为我的gcm监听器服务也是用内存清除的,但事实上问题可能更深层:GcmReceiver(它应该接收一条消息并将其发送到MyListenerService)可以从RAM中清除(参见一个评论here)
如何检查我的GcmReceiver是否仍然有效。我该怎么做才能支持它? 我可以将其设置为在前台运行或始终激活吗?
传统上:我关于GCM的清单(MyGcmLister
。class extends GcmListenerService
。class)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.app.path" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- ... other permissions -->
<permission
android:name="my.app.path.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="my.app.path.permission.C2D_MESSAGE" />
<application
...>
<!-- ... activites... -->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="my.app.path" />
</intent-filter>
</receiver>
<service
android:name=".MyGcmListener"
android:exported="false"
android:enabled="true" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
</application>
</manifest>