diff options
| author | 2016-03-05 19:48:59 -0700 | |
|---|---|---|
| committer | 2016-03-05 19:49:02 -0700 | |
| commit | 3e1958936e9fbf853269200c00f8506d84d1a64d (patch) | |
| tree | 91ae3aa4ac16671531fc94ff7c924d24c53e6183 | |
| parent | 9dd3b2162dd308762a023ad07a39c2379bcbf931 (diff) | |
Skip publishContentProviders() when we have zero.
If the list of providers for the application being bound is empty,
don't bother trying to register them.
Bug: 27510621
Change-Id: I921fb70a4c97433fa123fa88e170745ee013ee35
| -rw-r--r-- | core/java/android/app/ActivityThread.java | 6 | ||||
| -rw-r--r-- | core/java/com/android/internal/util/ArrayUtils.java | 8 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 6 |
3 files changed, 14 insertions, 6 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 14688c1bc1b9..a452d2047088 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -113,6 +113,7 @@ import com.android.internal.os.BinderInternal; import com.android.internal.os.RuntimeInit; import com.android.internal.os.SamplingProfilerIntegration; import com.android.internal.os.SomeArgs; +import com.android.internal.util.ArrayUtils; import com.android.internal.util.FastPrintWriter; import com.android.org.conscrypt.OpenSSLSocketImpl; import com.android.org.conscrypt.TrustedCertificateStore; @@ -5264,9 +5265,8 @@ public final class ActivityThread { // don't bring up providers in restricted mode; they may depend on the // app's custom Application class if (!data.restrictedBackupMode) { - List<ProviderInfo> providers = data.providers; - if (providers != null) { - installContentProviders(app, providers); + if (!ArrayUtils.isEmpty(data.providers)) { + installContentProviders(app, data.providers); // For process that contains content providers, we want to // ensure that the JIT is enabled "at some point". mH.sendEmptyMessageDelayed(H.ENABLE_JIT, 10*1000); diff --git a/core/java/com/android/internal/util/ArrayUtils.java b/core/java/com/android/internal/util/ArrayUtils.java index 80269493fa5e..a84a061077bf 100644 --- a/core/java/com/android/internal/util/ArrayUtils.java +++ b/core/java/com/android/internal/util/ArrayUtils.java @@ -27,6 +27,7 @@ import libcore.util.EmptyArray; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.Objects; /** @@ -126,6 +127,13 @@ public class ArrayUtils { /** * Checks if given array is null or has zero elements. */ + public static boolean isEmpty(@Nullable List<?> array) { + return array == null || array.isEmpty(); + } + + /** + * Checks if given array is null or has zero elements. + */ public static <T> boolean isEmpty(@Nullable T[] array) { return array == null || array.length == 0; } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 8cea8ee06749..e22a0656f7c4 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -9902,11 +9902,11 @@ public final class ActivityManagerService extends ActivityManagerNative private final List<ProviderInfo> generateApplicationProvidersLocked(ProcessRecord app) { List<ProviderInfo> providers = null; try { - ParceledListSlice<ProviderInfo> slice = AppGlobals.getPackageManager() + providers = AppGlobals.getPackageManager() .queryContentProviders(app.processName, app.uid, STOCK_PM_FLAGS | PackageManager.GET_URI_PERMISSION_PATTERNS - | MATCH_DEBUG_TRIAGED_MISSING); - providers = slice != null ? slice.getList() : null; + | MATCH_DEBUG_TRIAGED_MISSING) + .getList(); } catch (RemoteException ex) { } if (DEBUG_MU) Slog.v(TAG_MU, |