迁移到 FCM 和 Android O - 启动 IntentService 是否仍然有效?
Migrating to FCM and Android O - Is launching an IntentService still valid?
我目前正在将我的项目更新到 targetSdkVersion 26 (Android O) 并从 GCM 迁移到 FCM。
目前我有:
获取 GCM 令牌并将此令牌发布到服务器的 RegistrationIntentService
。
MainActivity
检查 GooglePlayServices
然后启动 RegistrationIntentService
.
A MyInstanceIDListenerService
具有刚刚启动 RegistrationIntentService
.
的 onTokenRefresh
方法
这是基于 Google sample。
要迁移到 FCM,我只需更改 MyInstanceIDListenerService
以继承 FirebaseInstanceIdService
并且 RegistrationIntentService
现在使用 FirebaseInstanceId
获取令牌。
一切似乎都正常,我在 Android O 模拟器中测试了它。
不过,我知道 Android O 正在限制后台服务。所以,我想知道在以 Android O 为目标的应用程序中是否仍然可以从 MainActivity
和 MyInstanceIDListenerService
.
启动 RegistrationIntentService
或者我应该将 RegistrationIntentService
代码移动到 WorkManager
执行的任务吗?
谢谢。
您的问题没有直接的答案,因为这取决于您的用例,尤其是调用 RegistrationIntentService
时需要完成多少处理。
当您的应用程序处于前台或收到某些事件(如数据推送)时,您仍然可以在 Oreo 上使用 IntentService
。
但是,您可以直接从 onHandleIntent()
方法使用 JobIntentService.enqueueWork()
在后台简单地启动 IntentService
,这意味着它将在 OS 被执行时执行愿意为你牺牲资源。
根据工作量,您可能仍需要创建前台服务,因为您的应用会被列入白名单一段时间,但不会持续很长时间。
不过,我仍在努力寻找任何关于任何后台任务可能花费多少时间的参考资料。到目前为止,我一直依赖于实验,但这显然不是实现任何关键服务的可靠方法。
我目前正在将我的项目更新到 targetSdkVersion 26 (Android O) 并从 GCM 迁移到 FCM。
目前我有:
获取 GCM 令牌并将此令牌发布到服务器的
RegistrationIntentService
。MainActivity
检查GooglePlayServices
然后启动RegistrationIntentService
.A
MyInstanceIDListenerService
具有刚刚启动RegistrationIntentService
. 的
onTokenRefresh
方法
这是基于 Google sample。
要迁移到 FCM,我只需更改 MyInstanceIDListenerService
以继承 FirebaseInstanceIdService
并且 RegistrationIntentService
现在使用 FirebaseInstanceId
获取令牌。
一切似乎都正常,我在 Android O 模拟器中测试了它。
不过,我知道 Android O 正在限制后台服务。所以,我想知道在以 Android O 为目标的应用程序中是否仍然可以从 MainActivity
和 MyInstanceIDListenerService
.
RegistrationIntentService
或者我应该将 RegistrationIntentService
代码移动到 WorkManager
执行的任务吗?
谢谢。
您的问题没有直接的答案,因为这取决于您的用例,尤其是调用 RegistrationIntentService
时需要完成多少处理。
当您的应用程序处于前台或收到某些事件(如数据推送)时,您仍然可以在 Oreo 上使用 IntentService
。
但是,您可以直接从 onHandleIntent()
方法使用 JobIntentService.enqueueWork()
在后台简单地启动 IntentService
,这意味着它将在 OS 被执行时执行愿意为你牺牲资源。
根据工作量,您可能仍需要创建前台服务,因为您的应用会被列入白名单一段时间,但不会持续很长时间。
不过,我仍在努力寻找任何关于任何后台任务可能花费多少时间的参考资料。到目前为止,我一直依赖于实验,但这显然不是实现任何关键服务的可靠方法。