我跟着Firebase Quickstart Messaging Tutorial,我遇到了问题。
我想在系统启动时启动这两项服务(MyFirebaseMessagingService
和MyFirebaseInstanceIDService
)。
为此,我已将RECEIVE_BOOT_COMPLETED
权限添加到AndroidManifest.xml
。
我还将此添加到清单:
<receiver android:name=".AutoStart">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
在我的 AutoStart
课程中,有以下内容:
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, MyFirebaseInstanceIDService.class));
context.startService(new Intent(context, MyFirebaseMessagingService.class));
}
这两项服务与我上面提供的链接几乎相同。我的MainActivity
只包含一些Views
。
但它不起作用:一旦服务启动,服务就会自动终止,我在logcat中收到这样的消息:
I/ActivityManager﹕ Killing 3100:com.company.E/u0a85 (adj 15): empty #17
我已经搜索了有关此“杀戮问题”的解决方案,我认为我发现了一些有趣的内容here(约WakefulBroadcastReceiver
)。
如果这部分解决方案,我遇到了这个答案的另一个问题......
他谈到的onHandleIntent()
覆盖方法是IntentService
的一部分,其中我的两项服务是Service
。
如果这不是解决方案的一部分,我不知道如何防止我的应用被杀 ......