Android JobIntentService - onStartCommand vs onHandleWork

时间:2018-03-08 13:02:45

标签: android service android-8.0-oreo android-intentservice jobintentservice

我目前正在从Service类扩展我的自定义服务实现。作为Android-O迁移的一部分,我想使用 JobIntentService

Currenlty我的所有逻辑都在服务 onStartCommand 方法。

但是,根据JobIntentService,我应该为我的逻辑部分使用 onHandleWork 方法。

official documentation for JobIntentService表示 onStartCommand 进程作为pre-O服务运行时启动命令,将它们排入以后在onHandleWork(Intent)中调度。

所以,我的问题是我是否需要同时保持onStartCommand& onHandleWork方法&我是否需要在这两种方法中编写相同的逻辑?

简单地onHandleWork会起作用吗?

请澄清。

2 个答案:

答案 0 :(得分:3)

  

Currenlty我的所有逻辑都在服务的onStartCommand方法中。

目前还不清楚为什么你有这项服务。您的服务需要派生后台线程,这意味着创建其他类(例如,ThreadRunnable的子类。)

  

我是否需要同时保持onStartCommand& onHandleWork方法&我是否需要在这两种方法中编写相同的逻辑?

如果您使用JobIntentService,则将所有内容都放在onHandleWork()中。这是onHandleIntent()IntentService的直接模拟 - 它将在后台线程上调用,如果方法返回时没有其他工作要做,服务就会消失。 / p>

答案 1 :(得分:0)

你需要使用 enqueueWork(@NonNull Context context,@ NonNull Class cls,int jobId,             @NonNull意图工作)

从JobIntentService启动作业

请参阅https://developer.android.com/reference/android/support/v4/app/JobIntentService