diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2021-03-03 02:29:51 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-03-03 02:29:51 +0000 |
| commit | 2f74b666a335022de559601c90e7a8b67c4fb8f4 (patch) | |
| tree | a19a6e73bf645e442c1a9b9805e98db588af9f67 /core/java/android | |
| parent | 8f31e0c19187df3a018445a8cac51ab1002f2a86 (diff) | |
| parent | 8f35d505babb6b60ec07aa84b1caa01524f808b2 (diff) | |
Merge "Avoid running RegisteredServicesCache tasks on main thread" into sc-dev
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/content/pm/RegisteredServicesCache.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/core/java/android/content/pm/RegisteredServicesCache.java b/core/java/android/content/pm/RegisteredServicesCache.java index 7ecb11248d23..7696cbe0b631 100644 --- a/core/java/android/content/pm/RegisteredServicesCache.java +++ b/core/java/android/content/pm/RegisteredServicesCache.java @@ -42,6 +42,7 @@ import android.util.Xml; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.os.BackgroundThread; import com.android.internal.util.ArrayUtils; import libcore.io.IoUtils; @@ -161,18 +162,20 @@ public abstract class RegisteredServicesCache<V> { intentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED); intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED); intentFilter.addDataScheme("package"); - mContext.registerReceiverAsUser(mPackageReceiver, UserHandle.ALL, intentFilter, null, null); + Handler handler = BackgroundThread.getHandler(); + mContext.registerReceiverAsUser( + mPackageReceiver, UserHandle.ALL, intentFilter, null, handler); // Register for events related to sdcard installation. IntentFilter sdFilter = new IntentFilter(); sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE); sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE); - mContext.registerReceiver(mExternalReceiver, sdFilter); + mContext.registerReceiver(mExternalReceiver, sdFilter, null, handler); // Register for user-related events IntentFilter userFilter = new IntentFilter(); sdFilter.addAction(Intent.ACTION_USER_REMOVED); - mContext.registerReceiver(mUserRemovedReceiver, userFilter); + mContext.registerReceiver(mUserRemovedReceiver, userFilter, null, handler); } private void handlePackageEvent(Intent intent, int userId) { @@ -265,7 +268,7 @@ public abstract class RegisteredServicesCache<V> { public void setListener(RegisteredServicesCacheListener<V> listener, Handler handler) { if (handler == null) { - handler = new Handler(mContext.getMainLooper()); + handler = BackgroundThread.getHandler(); } synchronized (this) { mHandler = handler; |
