代码之家  ›  专栏  ›  技术社区  ›  fernandospr

迁移到FCM和Android O-启动IntentService仍然有效吗?

  •  0
  • fernandospr  · 技术社区  · 6 年前

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

    目前我有:

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

    • MainActivity 这就检查了 GooglePlayServices 然后开始 注册服务 .

    • A. MyInstanceIDListenerService 哪个有 onTokenRefresh 方法来启动 注册服务 .

    这是基于谷歌 sample .

    要迁移到FCM,我只需要改变 MyInstanceIDListenerService 继承 FirebaseInstanceIdService 注册服务 现在使用 FirebaseInstanceId 去拿代币。

    一切似乎都正常,我在Android O模拟器上测试了它。

    然而,我知道安卓O正在限制后台服务。所以,我想知道,在一个以安卓O为目标的应用程序中,它是否仍然可以启动 注册服务 主要活动 MyInstanceIDListenerService .

    还是我应该移动 注册服务 要由执行的任务的代码 WorkManager ?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   racs    6 年前

    对于你的问题没有直接的答案,因为这取决于你的用例,尤其是当 RegistrationIntentService 被称为。 你仍然可以使用 IntentService 在Oreo上,当你的应用程序在前台或当它收到某些事件时,比如数据推送。

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

    不过,我仍在努力寻找任何关于任何背景任务可能花费多少时间的参考资料。到目前为止,我依靠的是实验,但这显然不是实现任何关键服务的可靠方法。