我的 GCM 服务有时会在我的智能手机的 RAM 被自动清除时关闭(如果您需要更多详细信息,请阅读此内容)。
据我了解,如果我将服务设置为在前台运行,它应该有助于系统使用 RAM 删除它。的方法Service.class
onStartCommand()
通常用于运行startForeground()
方法。
但是对于最新版本的 GCM 实现,这是不可能的,因为onStartCommand()
父方法GCMListenerService.class
被定义为final,我无法覆盖它。
那么如何将我的 gcm 接收器设置为前台朗姆酒呢?
这是我关于 GCM 的清单部分。
<?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>
先感谢您。