0

我目前正在将我的项目更新为 targetSdkVersion 26 (Android O),并从 GCM 迁移到 FCM。

目前我有:

  • RegistrationIntentService获取 GCM 令牌并将此令牌发布到服务器的A。

  • MainActivity检查GooglePlayServices然后启动RegistrationIntentService.

  • AMyInstanceIDListenerService具有onTokenRefresh刚刚启动RegistrationIntentService.

这是基于 Google示例

要迁移到 FCM,我只需更改MyInstanceIDListenerService为继承自FirebaseInstanceIdServiceRegistrationIntentService现在用于FirebaseInstanceId获取令牌。

一切似乎都正常,我在 Android O 模拟器中对其进行了测试。

但是,我知道 Android O 正在限制后台服务。RegistrationIntentService所以,我想知道在以 Android O 为目标的应用程序中从MainActivityand开始是否仍然可以MyInstanceIDListenerService

或者我应该将RegistrationIntentService代码移动到要由 执行的任务WorkManager吗?

谢谢。

4

1 回答 1

1

您的问题没有直接的答案,因为这取决于您的用例,尤其是在调用时需要完成多少处理RegistrationIntentServiceIntentService当您的应用程序处于前台或收到某些事件(如数据推送)时,您仍然可以在 Oreo 上使用。

但是,您可以直接使用您的方法IntentService在后台简单地启动您的方法,这意味着它将在操作系统愿意为您牺牲资源时执行。根据您可能仍需要创建前台服务的工作量,因为您的应用程序将被列入白名单一段时间,但不会延长一段时间。JobIntentService.enqueueWork()onHandleIntent()

不过,我仍在尝试查找有关任何后台任务可能花费多少时间的任何参考。到目前为止,我一直依赖于实验,但这显然不是实现任何关键服务的可靠方法。

于 2018-06-03T05:51:31.763 回答