我目前正在从Service类扩展我的自定义服务实现。作为Android-O迁移的一部分,我想使用 JobIntentService 。
Currenlty我的所有逻辑都在服务 onStartCommand 方法。
但是,根据JobIntentService,我应该为我的逻辑部分使用 onHandleWork 方法。
official documentation for JobIntentService表示 onStartCommand 进程作为pre-O服务运行时启动命令,将它们排入以后在onHandleWork(Intent)中调度。
所以,我的问题是我是否需要同时保持onStartCommand& onHandleWork方法&我是否需要在这两种方法中编写相同的逻辑?
或
简单地onHandleWork会起作用吗?
请澄清。
答案 0 :(得分:3)
Currenlty我的所有逻辑都在服务的onStartCommand方法中。
目前还不清楚为什么你有这项服务。您的服务需要派生后台线程,这意味着创建其他类(例如,Thread
,Runnable
的子类。)
我是否需要同时保持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