Loading core/java/android/app/JobSchedulerImpl.java +20 −3 Original line number Diff line number Diff line Loading @@ -17,16 +17,15 @@ // in android.app so ContextImpl has package access package android.app; import android.app.job.IJobScheduler; import android.app.job.JobInfo; import android.app.job.JobScheduler; import android.app.job.IJobScheduler; import android.app.job.JobSnapshot; import android.app.job.JobWorkItem; import android.content.Intent; import android.os.RemoteException; import java.util.List; /** * Concrete implementation of the JobScheduler interface * @hide Loading Loading @@ -98,4 +97,22 @@ public class JobSchedulerImpl extends JobScheduler { return null; } } @Override public List<JobInfo> getStartedJobs() { try { return mBinder.getStartedJobs(); } catch (RemoteException e) { return null; } } @Override public List<JobSnapshot> getAllJobSnapshots() { try { return mBinder.getAllJobSnapshots(); } catch (RemoteException e) { return null; } } } core/java/android/app/job/IJobScheduler.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.app.job; import android.app.job.JobInfo; import android.app.job.JobSnapshot; import android.app.job.JobWorkItem; /** Loading @@ -31,4 +32,6 @@ interface IJobScheduler { void cancelAll(); List<JobInfo> getAllPendingJobs(); JobInfo getPendingJob(int jobId); List<JobInfo> getStartedJobs(); List<JobSnapshot> getAllJobSnapshots(); } core/java/android/app/job/JobScheduler.java +17 −1 Original line number Diff line number Diff line Loading @@ -172,4 +172,20 @@ public abstract class JobScheduler { * if the supplied job ID does not correspond to any job. */ public abstract @Nullable JobInfo getPendingJob(int jobId); /** * <b>For internal system callers only!</b> * Returns a list of all currently-executing jobs. * @hide */ public abstract List<JobInfo> getStartedJobs(); /** * <b>For internal system callers only!</b> * Returns a snapshot of the state of all jobs known to the system. * * <p class="note">This is a slow operation, so it should be called sparingly. * @hide */ public abstract List<JobSnapshot> getAllJobSnapshots(); } No newline at end of file core/java/android/app/job/JobSnapshot.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /** * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.app.job; parcelable JobSnapshot; core/java/android/app/job/JobSnapshot.java 0 → 100644 +111 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.app.job; import android.os.Parcel; import android.os.Parcelable; /** * Current-state snapshot of a scheduled job. These snapshots are not used in apps; * they exist only within the system process across the local call surface where JobStatus * is not directly accessible at build time. * * Constraints that the underlying job does not require are always reported as * being currently satisfied. * @hide */ public class JobSnapshot implements Parcelable { private final JobInfo mJob; private final int mSatisfiedConstraints; private final boolean mIsRunnable; public JobSnapshot(JobInfo info, int satisfiedMask, boolean runnable) { mJob = info; mSatisfiedConstraints = satisfiedMask; mIsRunnable = runnable; } public JobSnapshot(Parcel in) { mJob = JobInfo.CREATOR.createFromParcel(in); mSatisfiedConstraints = in.readInt(); mIsRunnable = in.readBoolean(); } private boolean satisfied(int flag) { return (mSatisfiedConstraints & flag) != 0; } /** * Is this job actually runnable at this moment? */ public boolean isRunnable() { return mIsRunnable; } /** * @see JobInfo.Builder#setRequiresCharging(boolean) */ public boolean isChargingSatisfied() { return !mJob.isRequireCharging() || satisfied(JobInfo.CONSTRAINT_FLAG_CHARGING); } /** * @see JobInfo.Builder#setRequiresBatteryNotLow(boolean) */ public boolean isBatteryNotLowSatisfied() { return !mJob.isRequireBatteryNotLow() || satisfied(JobInfo.CONSTRAINT_FLAG_BATTERY_NOT_LOW); } /** * @see JobInfo.Builder#setRequiresDeviceIdle(boolean) */ public boolean isRequireDeviceIdleSatisfied() { return !mJob.isRequireDeviceIdle() || satisfied(JobInfo.CONSTRAINT_FLAG_BATTERY_NOT_LOW); } public boolean isRequireStorageNotLowSatisfied() { return !mJob.isRequireStorageNotLow() || satisfied(JobInfo.CONSTRAINT_FLAG_STORAGE_NOT_LOW); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { mJob.writeToParcel(out, flags); out.writeInt(mSatisfiedConstraints); out.writeBoolean(mIsRunnable); } public static final Creator<JobSnapshot> CREATOR = new Creator<JobSnapshot>() { @Override public JobSnapshot createFromParcel(Parcel in) { return new JobSnapshot(in); } @Override public JobSnapshot[] newArray(int size) { return new JobSnapshot[size]; } }; } Loading
core/java/android/app/JobSchedulerImpl.java +20 −3 Original line number Diff line number Diff line Loading @@ -17,16 +17,15 @@ // in android.app so ContextImpl has package access package android.app; import android.app.job.IJobScheduler; import android.app.job.JobInfo; import android.app.job.JobScheduler; import android.app.job.IJobScheduler; import android.app.job.JobSnapshot; import android.app.job.JobWorkItem; import android.content.Intent; import android.os.RemoteException; import java.util.List; /** * Concrete implementation of the JobScheduler interface * @hide Loading Loading @@ -98,4 +97,22 @@ public class JobSchedulerImpl extends JobScheduler { return null; } } @Override public List<JobInfo> getStartedJobs() { try { return mBinder.getStartedJobs(); } catch (RemoteException e) { return null; } } @Override public List<JobSnapshot> getAllJobSnapshots() { try { return mBinder.getAllJobSnapshots(); } catch (RemoteException e) { return null; } } }
core/java/android/app/job/IJobScheduler.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.app.job; import android.app.job.JobInfo; import android.app.job.JobSnapshot; import android.app.job.JobWorkItem; /** Loading @@ -31,4 +32,6 @@ interface IJobScheduler { void cancelAll(); List<JobInfo> getAllPendingJobs(); JobInfo getPendingJob(int jobId); List<JobInfo> getStartedJobs(); List<JobSnapshot> getAllJobSnapshots(); }
core/java/android/app/job/JobScheduler.java +17 −1 Original line number Diff line number Diff line Loading @@ -172,4 +172,20 @@ public abstract class JobScheduler { * if the supplied job ID does not correspond to any job. */ public abstract @Nullable JobInfo getPendingJob(int jobId); /** * <b>For internal system callers only!</b> * Returns a list of all currently-executing jobs. * @hide */ public abstract List<JobInfo> getStartedJobs(); /** * <b>For internal system callers only!</b> * Returns a snapshot of the state of all jobs known to the system. * * <p class="note">This is a slow operation, so it should be called sparingly. * @hide */ public abstract List<JobSnapshot> getAllJobSnapshots(); } No newline at end of file
core/java/android/app/job/JobSnapshot.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /** * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.app.job; parcelable JobSnapshot;
core/java/android/app/job/JobSnapshot.java 0 → 100644 +111 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.app.job; import android.os.Parcel; import android.os.Parcelable; /** * Current-state snapshot of a scheduled job. These snapshots are not used in apps; * they exist only within the system process across the local call surface where JobStatus * is not directly accessible at build time. * * Constraints that the underlying job does not require are always reported as * being currently satisfied. * @hide */ public class JobSnapshot implements Parcelable { private final JobInfo mJob; private final int mSatisfiedConstraints; private final boolean mIsRunnable; public JobSnapshot(JobInfo info, int satisfiedMask, boolean runnable) { mJob = info; mSatisfiedConstraints = satisfiedMask; mIsRunnable = runnable; } public JobSnapshot(Parcel in) { mJob = JobInfo.CREATOR.createFromParcel(in); mSatisfiedConstraints = in.readInt(); mIsRunnable = in.readBoolean(); } private boolean satisfied(int flag) { return (mSatisfiedConstraints & flag) != 0; } /** * Is this job actually runnable at this moment? */ public boolean isRunnable() { return mIsRunnable; } /** * @see JobInfo.Builder#setRequiresCharging(boolean) */ public boolean isChargingSatisfied() { return !mJob.isRequireCharging() || satisfied(JobInfo.CONSTRAINT_FLAG_CHARGING); } /** * @see JobInfo.Builder#setRequiresBatteryNotLow(boolean) */ public boolean isBatteryNotLowSatisfied() { return !mJob.isRequireBatteryNotLow() || satisfied(JobInfo.CONSTRAINT_FLAG_BATTERY_NOT_LOW); } /** * @see JobInfo.Builder#setRequiresDeviceIdle(boolean) */ public boolean isRequireDeviceIdleSatisfied() { return !mJob.isRequireDeviceIdle() || satisfied(JobInfo.CONSTRAINT_FLAG_BATTERY_NOT_LOW); } public boolean isRequireStorageNotLowSatisfied() { return !mJob.isRequireStorageNotLow() || satisfied(JobInfo.CONSTRAINT_FLAG_STORAGE_NOT_LOW); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { mJob.writeToParcel(out, flags); out.writeInt(mSatisfiedConstraints); out.writeBoolean(mIsRunnable); } public static final Creator<JobSnapshot> CREATOR = new Creator<JobSnapshot>() { @Override public JobSnapshot createFromParcel(Parcel in) { return new JobSnapshot(in); } @Override public JobSnapshot[] newArray(int size) { return new JobSnapshot[size]; } }; }