3

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

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

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

JobIntentService的官方文档onStartCommand 进程在作为 pre-O 服务运行时启动命令,将它们排入队列以便稍后在 onHandleWork(Intent) 中调度。

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

或者

简单的 onHandleWork 会起作用吗?

请说清楚。

4

2 回答 2

3

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

那么,尚不清楚您为什么拥有该服务。您的服务需要派生一个后台线程,这意味着创建其他类(例如 , 的子类ThreadRunnable

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

如果你正在使用JobIntentService,你把所有东西都放进去onHandleWork()onHandleIntent()这与in an直接类似IntentService——它将在后台线程上调用,如果方法返回时没有更多工作要做,则服务可以消失。

于 2018-03-08T14:04:45.167 回答
0

你需要使用 enqueueWork(@NonNull Context context, @NonNull Class cls, int jobId, @NonNull Intent work)

从 JobIntentService 启动 Job

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

于 2018-05-08T09:00:31.303 回答