diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 3167ba7fe3317..5022d7d9622ba 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -2199,7 +2199,7 @@ public final class ActivityThread { public ContextImpl getSystemUiContext() { synchronized (this) { if (mSystemUiContext == null) { - mSystemUiContext = ContextImpl.createSystemUiContext(this); + mSystemUiContext = ContextImpl.createSystemUiContext(getSystemContext()); } return mSystemUiContext; } diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 75f9d671fbad7..6cc8a14ea2f98 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -2220,11 +2220,12 @@ class ContextImpl extends Context { /** * System Context to be used for UI. This Context has resources that can be themed. + * Make sure that the created system UI context shares the same LoadedApk as the system context. */ - static ContextImpl createSystemUiContext(ActivityThread mainThread) { - LoadedApk packageInfo = new LoadedApk(mainThread); - ContextImpl context = new ContextImpl(null, mainThread, packageInfo, null, null, null, 0, - null); + static ContextImpl createSystemUiContext(ContextImpl systemContext) { + final LoadedApk packageInfo = systemContext.mPackageInfo; + ContextImpl context = new ContextImpl(null, systemContext.mMainThread, packageInfo, null, + null, null, 0, null); context.setResources(createResources(null, packageInfo, null, Display.DEFAULT_DISPLAY, null, packageInfo.getCompatibilityInfo())); return context;