Most visited

Recently visited

Added in API level 21

JobService

public abstract class JobService
extends Service

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
       ↳ android.app.Service
         ↳ android.app.job.JobService


JobScheduler回调的入口点。

这是处理先前调度的异步请求的基类。 您有责任重写onStartJob(JobParameters) ,这是您执行工作逻辑的地方。

该服务在应用程序主线程上运行的Handler上执行每个传入作业。 这意味着您必须将执行逻辑卸载到您选择的另一个线程/处理程序/ AsyncTask 如果不这样做,将导致阻止onStopJob(android.app.job.JobParameters)未来的任何回调 - 特别是onStopJob(android.app.job.JobParameters) ,这意味着通知您不再满足调度要求。

Summary

Constants

String PERMISSION_BIND

作业服务必须受到此权限的保护:

     <service android:name="MyJobService"
              android:permission="android.permission.BIND_JOB_SERVICE" >
         ...
          
    

Inherited constants

From class android.app.Service
From class android.content.Context
From interface android.content.ComponentCallbacks2

Public constructors

JobService()

Public methods

final void jobFinished(JobParameters params, boolean needsReschedule)

回调通知已完成执行的JobManager。

abstract boolean onStartJob(JobParameters params)

用您的工作的回调逻辑覆盖此方法。

abstract boolean onStopJob(JobParameters params)

如果系统确定您必须在有机会致电 jobFinished(JobParameters, boolean)之前必须停止执行工作,则会调用 jobFinished(JobParameters, boolean)

Inherited methods

From class android.app.Service
From class android.content.ContextWrapper
From class android.content.Context
From class java.lang.Object
From interface android.content.ComponentCallbacks2
From interface android.content.ComponentCallbacks

Constants

PERMISSION_BIND

Added in API level 21
String PERMISSION_BIND

作业服务必须受到此权限的保护:

     <service android:name="MyJobService"
              android:permission="android.permission.BIND_JOB_SERVICE" >
         ...
     </service>
 

如果作业服务在清单中声明但未受此权限保护,则该服务将被操作系统忽略。

常量值:“android.permission.BIND_JOB_SERVICE”

Public constructors

JobService

Added in API level 21
JobService ()

Public methods

jobFinished

Added in API level 21
void jobFinished (JobParameters params, 
                boolean needsReschedule)

回调通知已完成执行的JobManager。 这可以从任何线程调用,因为它最终将在应用程序的主线程上运行。 当系统收到这条消息时,它会释放正在举行的唤醒锁。

您可以使用needsReschedule在此处为调度程序指定执行后行为。 这将根据默认设置为您的作业应用回退计时器,或使用setBackoffCriteria(long, int)设置的回退计时器。 原始要求即使对于退休工作也始终得到尊重。 请注意,在空闲模式下运行的作业不会被退回。 取而代之的是,作业将被重新添加到队列中,并在未来的空闲维护时段内重新执行。

Parameters
params JobParameters: Parameters specifying system-provided info about this job, this was given to your application in onStartJob(JobParameters).
needsReschedule boolean: True if this job should be rescheduled according to the back-off criteria specified at schedule-time. False otherwise.

onStartJob

Added in API level 21
boolean onStartJob (JobParameters params)

用您的工作的回调逻辑覆盖此方法。 任何这样的逻辑都需要在单独的线程上执行,因为这个函数在应用程序的主线程上执行。

Parameters
params JobParameters: Parameters specifying info about this job, including the extras bundle you optionally provided at job-creation time.
Returns
boolean True if your service needs to process the work (on a separate thread). False if there's no more work to be done for this job.

onStopJob

Added in API level 21
boolean onStopJob (JobParameters params)

如果系统确定您必须在您有机会致电 jobFinished(JobParameters, boolean)之前必须停止执行工作,则会调用 jobFinished(JobParameters, boolean)

如果不再满足在计划时间指定的要求,则会发生这种情况。 例如,您可能已请求setRequiredNetworkType(int) WiFi,但您的工作正在执行用户切换的WiFi。 另一个例子是,如果您指定了setRequiresDeviceIdle(boolean) ,并且电话处于空闲维护setRequiresDeviceIdle(boolean) 收到此消息后,您应对您的应用程序的行为负责; 如果您忽略它,您的应用可能会开始行为不端。 一个直接的影响是系统将停止为你启动唤醒锁。

Parameters
params JobParameters: Parameters specifying info about this job.
Returns
boolean True to indicate to the JobManager whether you'd like to reschedule this job based on the retry criteria provided at job creation-time. False to drop the job. Regardless of the value returned, your job must stop executing.

Hooray!