summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sudheer Shanka <sudheersai@google.com> 2023-12-05 16:23:42 -0800
committer Sudheer Shanka <sudheersai@google.com> 2023-12-05 18:37:54 -0800
commit1d21f7e97b880a0cd203fd55687658285bcede72 (patch)
treee24bbf2b48ce5c72b9e1242149bb7a04e9ab390a
parent2230d0d497051e5aea4e79def855749a6a99d65c (diff)
Update SyncManager to use PackageMonitor instead of broadcasts.
Bug: 315046091 Test: manual Change-Id: I0aa2a2ae91512d9442319dcb79902adca20f5ea2
-rw-r--r--services/core/java/com/android/server/content/SyncManager.java34
1 files changed, 19 insertions, 15 deletions
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index 575b30946fce..5a9f113e79df 100644
--- a/services/core/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
@@ -105,6 +105,7 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IBatteryStats;
import com.android.internal.config.appcloning.AppCloningDeviceConfigHelper;
+import com.android.internal.content.PackageMonitor;
import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
import com.android.internal.notification.SystemNotificationChannels;
import com.android.internal.os.BackgroundThread;
@@ -438,19 +439,23 @@ public class SyncManager {
}
};
- private final BroadcastReceiver mForceStoppedReceiver = new BroadcastReceiver() {
+ private class PackageMonitorImpl extends PackageMonitor {
@Override
- public void onReceive(Context context, Intent intent) {
+ public boolean onHandleForceStop(Intent intent, String[] packageNames, int uid,
+ boolean doit, Bundle extras) {
final boolean isLoggable = Log.isLoggable(TAG, Log.DEBUG);
- // For now, just log when packages were force-stopped and unstopped for debugging.
if (isLoggable) {
- if (Intent.ACTION_PACKAGE_RESTARTED.equals(intent.getAction())) {
- Log.d(TAG, "Package force-stopped: "
- + intent.getData().getSchemeSpecificPart());
- } else if (Intent.ACTION_PACKAGE_UNSTOPPED.equals(intent.getAction())) {
- Log.d(TAG, "Package unstopped: "
- + intent.getData().getSchemeSpecificPart());
- }
+ Log.d(TAG, "Package force-stopped: " + Arrays.toString(packageNames)
+ + ", uid: " + uid);
+ }
+ return false;
+ }
+
+ @Override
+ public void onPackageUnstopped(String packageName, int uid, Bundle extras) {
+ final boolean isLoggable = Log.isLoggable(TAG, Log.DEBUG);
+ if (isLoggable) {
+ Log.d(TAG, "Package unstopped: " + packageName + ", uid: " + uid);
}
}
};
@@ -718,11 +723,10 @@ public class SyncManager {
mContext.registerReceiverAsUser(
mUserIntentReceiver, UserHandle.ALL, intentFilter, null, null);
- intentFilter = new IntentFilter();
- intentFilter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
- intentFilter.addAction(Intent.ACTION_PACKAGE_UNSTOPPED);
- intentFilter.addDataScheme("package");
- context.registerReceiver(mForceStoppedReceiver, intentFilter);
+
+ final PackageMonitor packageMonitor = new PackageMonitorImpl();
+ packageMonitor.register(mContext, null /* thread */, UserHandle.ALL,
+ false /* externalStorage */);
intentFilter = new IntentFilter(Intent.ACTION_TIME_CHANGED);
context.registerReceiver(mOtherIntentsReceiver, intentFilter);