Loading core/java/android/app/job/JobService.java +34 −14 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ import android.util.Log; import com.android.internal.annotations.GuardedBy; import java.lang.ref.WeakReference; /** * <p>Entry point for the callback from the {@link android.app.job.JobScheduler}.</p> * <p>This is the base class that handles asynchronous requests that were previously scheduled. You Loading Loading @@ -62,15 +64,15 @@ public abstract class JobService extends Service { * Identifier for a message that will result in a call to * {@link #onStartJob(android.app.job.JobParameters)}. */ private final int MSG_EXECUTE_JOB = 0; private static final int MSG_EXECUTE_JOB = 0; /** * Message that will result in a call to {@link #onStopJob(android.app.job.JobParameters)}. */ private final int MSG_STOP_JOB = 1; private static final int MSG_STOP_JOB = 1; /** * Message that the client has completed execution of this job. */ private final int MSG_JOB_FINISHED = 2; private static final int MSG_JOB_FINISHED = 2; /** Lock object for {@link #mHandler}. */ private final Object mHandlerLock = new Object(); Loading @@ -82,21 +84,36 @@ public abstract class JobService extends Service { @GuardedBy("mHandlerLock") JobHandler mHandler; /** Binder for this service. */ IJobService mBinder = new IJobService.Stub() { static final class JobInterface extends IJobService.Stub { final WeakReference<JobService> mService; JobInterface(JobService service) { mService = new WeakReference<>(service); } @Override public void startJob(JobParameters jobParams) { ensureHandler(); Message m = Message.obtain(mHandler, MSG_EXECUTE_JOB, jobParams); public void startJob(JobParameters jobParams) throws RemoteException { JobService service = mService.get(); if (service != null) { service.ensureHandler(); Message m = Message.obtain(service.mHandler, MSG_EXECUTE_JOB, jobParams); m.sendToTarget(); } } @Override public void stopJob(JobParameters jobParams) { ensureHandler(); Message m = Message.obtain(mHandler, MSG_STOP_JOB, jobParams); public void stopJob(JobParameters jobParams) throws RemoteException { JobService service = mService.get(); if (service != null) { service.ensureHandler(); Message m = Message.obtain(service.mHandler, MSG_STOP_JOB, jobParams); m.sendToTarget(); } }; } } IJobService mBinder; /** @hide */ void ensureHandler() { Loading Loading @@ -194,6 +211,9 @@ public abstract class JobService extends Service { /** @hide */ public final IBinder onBind(Intent intent) { if (mBinder == null) { mBinder = new JobInterface(this); } return mBinder.asBinder(); } Loading Loading
core/java/android/app/job/JobService.java +34 −14 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ import android.util.Log; import com.android.internal.annotations.GuardedBy; import java.lang.ref.WeakReference; /** * <p>Entry point for the callback from the {@link android.app.job.JobScheduler}.</p> * <p>This is the base class that handles asynchronous requests that were previously scheduled. You Loading Loading @@ -62,15 +64,15 @@ public abstract class JobService extends Service { * Identifier for a message that will result in a call to * {@link #onStartJob(android.app.job.JobParameters)}. */ private final int MSG_EXECUTE_JOB = 0; private static final int MSG_EXECUTE_JOB = 0; /** * Message that will result in a call to {@link #onStopJob(android.app.job.JobParameters)}. */ private final int MSG_STOP_JOB = 1; private static final int MSG_STOP_JOB = 1; /** * Message that the client has completed execution of this job. */ private final int MSG_JOB_FINISHED = 2; private static final int MSG_JOB_FINISHED = 2; /** Lock object for {@link #mHandler}. */ private final Object mHandlerLock = new Object(); Loading @@ -82,21 +84,36 @@ public abstract class JobService extends Service { @GuardedBy("mHandlerLock") JobHandler mHandler; /** Binder for this service. */ IJobService mBinder = new IJobService.Stub() { static final class JobInterface extends IJobService.Stub { final WeakReference<JobService> mService; JobInterface(JobService service) { mService = new WeakReference<>(service); } @Override public void startJob(JobParameters jobParams) { ensureHandler(); Message m = Message.obtain(mHandler, MSG_EXECUTE_JOB, jobParams); public void startJob(JobParameters jobParams) throws RemoteException { JobService service = mService.get(); if (service != null) { service.ensureHandler(); Message m = Message.obtain(service.mHandler, MSG_EXECUTE_JOB, jobParams); m.sendToTarget(); } } @Override public void stopJob(JobParameters jobParams) { ensureHandler(); Message m = Message.obtain(mHandler, MSG_STOP_JOB, jobParams); public void stopJob(JobParameters jobParams) throws RemoteException { JobService service = mService.get(); if (service != null) { service.ensureHandler(); Message m = Message.obtain(service.mHandler, MSG_STOP_JOB, jobParams); m.sendToTarget(); } }; } } IJobService mBinder; /** @hide */ void ensureHandler() { Loading Loading @@ -194,6 +211,9 @@ public abstract class JobService extends Service { /** @hide */ public final IBinder onBind(Intent intent) { if (mBinder == null) { mBinder = new JobInterface(this); } return mBinder.asBinder(); } Loading