Merge "Fix issue #29545190: JobScheduler ContentUri NOTIFY_FOR_DESCENDANTS flag..." into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a62a7eef24
@@ -28,6 +28,7 @@ import android.os.PersistableBundle;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Container of data passed to the {@link android.app.job.JobScheduler} fully encapsulating the
|
||||
@@ -494,6 +495,20 @@ public class JobInfo implements Parcelable {
|
||||
return mFlags;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (!(o instanceof TriggerContentUri)) {
|
||||
return false;
|
||||
}
|
||||
TriggerContentUri t = (TriggerContentUri) o;
|
||||
return Objects.equals(t.mUri, mUri) && t.mFlags == mFlags;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (mUri == null ? 0 : mUri.hashCode()) ^ mFlags;
|
||||
}
|
||||
|
||||
private TriggerContentUri(Parcel in) {
|
||||
mUri = Uri.CREATOR.createFromParcel(in);
|
||||
mFlags = in.readInt();
|
||||
|
||||
@@ -57,7 +57,7 @@ public class ContentObserverController extends StateController {
|
||||
private static volatile ContentObserverController sController;
|
||||
|
||||
final private List<JobStatus> mTrackedTasks = new ArrayList<JobStatus>();
|
||||
ArrayMap<Uri, ObserverInstance> mObservers = new ArrayMap<>();
|
||||
ArrayMap<JobInfo.TriggerContentUri, ObserverInstance> mObservers = new ArrayMap<>();
|
||||
final Handler mHandler;
|
||||
|
||||
public static ContentObserverController get(JobSchedulerService taskManagerService) {
|
||||
@@ -253,10 +253,10 @@ public class ContentObserverController extends StateController {
|
||||
final JobInfo.TriggerContentUri[] uris = jobStatus.getJob().getTriggerContentUris();
|
||||
if (uris != null) {
|
||||
for (JobInfo.TriggerContentUri uri : uris) {
|
||||
ObserverInstance obs = mObservers.get(uri.getUri());
|
||||
ObserverInstance obs = mObservers.get(uri);
|
||||
if (obs == null) {
|
||||
obs = new ObserverInstance(mHandler, uri.getUri());
|
||||
mObservers.put(uri.getUri(), obs);
|
||||
mObservers.put(uri, obs);
|
||||
mContext.getContentResolver().registerContentObserver(
|
||||
uri.getUri(),
|
||||
(uri.getFlags() &
|
||||
@@ -316,7 +316,7 @@ public class ContentObserverController extends StateController {
|
||||
obs.mJobs.remove(this);
|
||||
if (obs.mJobs.size() == 0) {
|
||||
mContext.getContentResolver().unregisterContentObserver(obs);
|
||||
mObservers.remove(obs.mUri);
|
||||
mObservers.remove(obs);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -355,7 +355,10 @@ public class ContentObserverController extends StateController {
|
||||
continue;
|
||||
}
|
||||
pw.print(" ");
|
||||
pw.print(mObservers.keyAt(i));
|
||||
JobInfo.TriggerContentUri trigger = mObservers.keyAt(i);
|
||||
pw.print(trigger.getUri());
|
||||
pw.print(" 0x");
|
||||
pw.print(Integer.toHexString(trigger.getFlags()));
|
||||
pw.print(" (");
|
||||
pw.print(System.identityHashCode(obs));
|
||||
pw.println("):");
|
||||
|
||||
Reference in New Issue
Block a user