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