JobParameters.java revision a47223f99b6b7ade4ae909c458d975eb487062b3
16e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams/* 26e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * Copyright (C) 2014 The Android Open Source Project 36e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * 46e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * Licensed under the Apache License, Version 2.0 (the "License"); 56e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * you may not use this file except in compliance with the License. 66e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * You may obtain a copy of the License at 76e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * 86e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * http://www.apache.org/licenses/LICENSE-2.0 96e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * 106e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * Unless required by applicable law or agreed to in writing, software 116e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * distributed under the License is distributed on an "AS IS" BASIS, 126e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * See the License for the specific language governing permissions and 146e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * limitations under the License 156e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams */ 166e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams 177060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tatepackage android.app.job; 186e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams 197060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tateimport android.app.job.IJobCallback; 20a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackbornimport android.content.ClipData; 211a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackbornimport android.net.Uri; 22ba60473a6539d16bef8720d79b5559512303bddfDianne Hackbornimport android.os.Bundle; 236e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williamsimport android.os.IBinder; 246e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williamsimport android.os.Parcel; 256e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williamsimport android.os.Parcelable; 263d86fd2bb9db6067c49634bc4c6cdb4d5235ad36Matthew Williamsimport android.os.PersistableBundle; 276e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams 286e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams/** 297060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate * Contains the parameters used to configure/identify your job. You do not create this object 306e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * yourself, instead it is handed in to your application by the System. 316e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams */ 327060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tatepublic class JobParameters implements Parcelable { 336e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams 345db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge /** @hide */ 355db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public static final int REASON_CANCELED = 0; 365db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge /** @hide */ 375db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public static final int REASON_CONSTRAINTS_NOT_SATISFIED = 1; 385db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge /** @hide */ 395db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public static final int REASON_PREEMPT = 2; 405db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge /** @hide */ 415db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public static final int REASON_TIMEOUT = 3; 425db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge /** @hide */ 435db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public static final int REASON_DEVICE_IDLE = 4; 445db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 457060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate private final int jobId; 463d86fd2bb9db6067c49634bc4c6cdb4d5235ad36Matthew Williams private final PersistableBundle extras; 47ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn private final Bundle transientExtras; 48a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn private final ClipData clipData; 49a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn private final int clipGrantFlags; 506de79e2b17fa0796ea4d39fd9555b563c484248dMatthew Williams private final IBinder callback; 5103a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams private final boolean overrideDeadlineExpired; 521a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn private final Uri[] mTriggeredContentUris; 531a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn private final String[] mTriggeredContentAuthorities; 541a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn 555db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge private int stopReason; // Default value of stopReason is REASON_CANCELED 566de79e2b17fa0796ea4d39fd9555b563c484248dMatthew Williams 576de79e2b17fa0796ea4d39fd9555b563c484248dMatthew Williams /** @hide */ 5803a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams public JobParameters(IBinder callback, int jobId, PersistableBundle extras, 59a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn Bundle transientExtras, ClipData clipData, int clipGrantFlags, 60a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn boolean overrideDeadlineExpired, Uri[] triggeredContentUris, 611a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn String[] triggeredContentAuthorities) { 627060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate this.jobId = jobId; 636de79e2b17fa0796ea4d39fd9555b563c484248dMatthew Williams this.extras = extras; 64ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn this.transientExtras = transientExtras; 65a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn this.clipData = clipData; 66a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn this.clipGrantFlags = clipGrantFlags; 676de79e2b17fa0796ea4d39fd9555b563c484248dMatthew Williams this.callback = callback; 6803a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams this.overrideDeadlineExpired = overrideDeadlineExpired; 691a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn this.mTriggeredContentUris = triggeredContentUris; 701a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn this.mTriggeredContentAuthorities = triggeredContentAuthorities; 716de79e2b17fa0796ea4d39fd9555b563c484248dMatthew Williams } 726e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams 736e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams /** 747060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate * @return The unique id of this job, specified at creation time. 756e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams */ 767060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate public int getJobId() { 777060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate return jobId; 786e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams } 796e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams 806e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams /** 815db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * Reason onStopJob() was called on this job. 825db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * @hide 835db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge */ 845db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public int getStopReason() { 855db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge return stopReason; 865db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 875db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 885db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge /** 897060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate * @return The extras you passed in when constructing this job with 907060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate * {@link android.app.job.JobInfo.Builder#setExtras(android.os.PersistableBundle)}. This will 916e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams * never be null. If you did not set any extras this will be an empty bundle. 926e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams */ 933d86fd2bb9db6067c49634bc4c6cdb4d5235ad36Matthew Williams public PersistableBundle getExtras() { 946e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams return extras; 956e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams } 966e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams 9703a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams /** 98ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * @return The transient extras you passed in when constructing this job with 99ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * {@link android.app.job.JobInfo.Builder#setTransientExtras(android.os.Bundle)}. This will 100ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * never be null. If you did not set any extras this will be an empty bundle. 101ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn */ 102ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn public Bundle getTransientExtras() { 103ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn return transientExtras; 104ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn } 105ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn 106ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn /** 107a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn * @return The clip you passed in when constructing this job with 108a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn * {@link android.app.job.JobInfo.Builder#setClipData(ClipData, int)}. Will be null 109a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn * if it was not set. 110a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn */ 111a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn public ClipData getClipData() { 112a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn return clipData; 113a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } 114a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn 115a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn /** 116a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn * @return The clip grant flags you passed in when constructing this job with 117a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn * {@link android.app.job.JobInfo.Builder#setClipData(ClipData, int)}. Will be 0 118a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn * if it was not set. 119a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn */ 120a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn public int getClipGrantFlags() { 121a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn return clipGrantFlags; 122a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } 123a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn 124a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn /** 12503a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams * For jobs with {@link android.app.job.JobInfo.Builder#setOverrideDeadline(long)} set, this 12603a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams * provides an easy way to tell whether the job is being executed due to the deadline 12703a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams * expiring. Note: If the job is running because its deadline expired, it implies that its 12803a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams * constraints will not be met. 12903a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams */ 13003a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams public boolean isOverrideDeadlineExpired() { 13103a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams return overrideDeadlineExpired; 13203a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams } 13303a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams 1341a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn /** 1351a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn * For jobs with {@link android.app.job.JobInfo.Builder#addTriggerContentUri} set, this 1361a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn * reports which URIs have triggered the job. This will be null if either no URIs have 1371a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn * triggered it (it went off due to a deadline or other reason), or the number of changed 1381a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn * URIs is too large to report. Whether or not the number of URIs is too large, you can 1391a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn * always use {@link #getTriggeredContentAuthorities()} to determine whether the job was 1401a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn * triggered due to any content changes and the authorities they are associated with. 1411a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn */ 1421a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn public Uri[] getTriggeredContentUris() { 1431a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn return mTriggeredContentUris; 1441a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn } 1451a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn 1461a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn /** 1471a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn * For jobs with {@link android.app.job.JobInfo.Builder#addTriggerContentUri} set, this 1481a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn * reports which content authorities have triggered the job. It will only be null if no 1491a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn * authorities have triggered it -- that is, the job executed for some other reason, such 1501a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn * as a deadline expiring. If this is non-null, you can use {@link #getTriggeredContentUris()} 1511a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn * to retrieve the details of which URIs changed (as long as that has not exceeded the maximum 1521a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn * number it can reported). 1531a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn */ 1541a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn public String[] getTriggeredContentAuthorities() { 1551a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn return mTriggeredContentAuthorities; 1561a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn } 1571a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn 1586de79e2b17fa0796ea4d39fd9555b563c484248dMatthew Williams /** @hide */ 1597060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate public IJobCallback getCallback() { 1607060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate return IJobCallback.Stub.asInterface(callback); 1616e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams } 1626e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams 1637060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate private JobParameters(Parcel in) { 1647060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate jobId = in.readInt(); 1653d86fd2bb9db6067c49634bc4c6cdb4d5235ad36Matthew Williams extras = in.readPersistableBundle(); 166ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn transientExtras = in.readBundle(); 167a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn if (in.readInt() != 0) { 168a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn clipData = ClipData.CREATOR.createFromParcel(in); 169a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn clipGrantFlags = in.readInt(); 170a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } else { 171a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn clipData = null; 172a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn clipGrantFlags = 0; 173a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } 1746de79e2b17fa0796ea4d39fd9555b563c484248dMatthew Williams callback = in.readStrongBinder(); 17503a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams overrideDeadlineExpired = in.readInt() == 1; 1761a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn mTriggeredContentUris = in.createTypedArray(Uri.CREATOR); 1771a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn mTriggeredContentAuthorities = in.createStringArray(); 1785db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge stopReason = in.readInt(); 1795db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 1805db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 1815db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge /** @hide */ 1825db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public void setStopReason(int reason) { 1835db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge stopReason = reason; 1846e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams } 1856e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams 1866e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams @Override 1876e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams public int describeContents() { 1886e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams return 0; 1896e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams } 1906e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams 1916e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams @Override 1926e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams public void writeToParcel(Parcel dest, int flags) { 1937060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate dest.writeInt(jobId); 1943d86fd2bb9db6067c49634bc4c6cdb4d5235ad36Matthew Williams dest.writePersistableBundle(extras); 195ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn dest.writeBundle(transientExtras); 196a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn if (clipData != null) { 197a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn dest.writeInt(1); 198a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn clipData.writeToParcel(dest, flags); 199a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn dest.writeInt(clipGrantFlags); 200a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } else { 201a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn dest.writeInt(0); 202a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } 2036de79e2b17fa0796ea4d39fd9555b563c484248dMatthew Williams dest.writeStrongBinder(callback); 20403a4da6e8e92b19c1345016c06694cb3aabbfc27Matthew Williams dest.writeInt(overrideDeadlineExpired ? 1 : 0); 2051a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn dest.writeTypedArray(mTriggeredContentUris, flags); 2061a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21Dianne Hackborn dest.writeStringArray(mTriggeredContentAuthorities); 2075db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge dest.writeInt(stopReason); 2086e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams } 2096e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams 2107060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate public static final Creator<JobParameters> CREATOR = new Creator<JobParameters>() { 2116e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams @Override 2127060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate public JobParameters createFromParcel(Parcel in) { 2137060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate return new JobParameters(in); 2146e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams } 2156e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams 2166e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams @Override 2177060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate public JobParameters[] newArray(int size) { 2187060b04f6d92351b67222e636ab378a0273bf3e7Christopher Tate return new JobParameters[size]; 2196e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams } 2206e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams }; 2216e31c5c82bc5c9bddf9c01d254067ea5bebbd96bMatthew Williams} 222