diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 268a105b7c6f6..1b25e65710653 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -256,28 +256,34 @@ class ContextImpl extends Context { @Override public void setTheme(int resId) { - if (mThemeResource != resId) { - mThemeResource = resId; - initializeTheme(); + synchronized (mSync) { + if (mThemeResource != resId) { + mThemeResource = resId; + initializeTheme(); + } } } @Override public int getThemeResId() { - return mThemeResource; + synchronized (mSync) { + return mThemeResource; + } } @Override public Resources.Theme getTheme() { - if (mTheme != null) { + synchronized (mSync) { + if (mTheme != null) { + return mTheme; + } + + mThemeResource = Resources.selectDefaultTheme(mThemeResource, + getOuterContext().getApplicationInfo().targetSdkVersion); + initializeTheme(); + return mTheme; } - - mThemeResource = Resources.selectDefaultTheme(mThemeResource, - getOuterContext().getApplicationInfo().targetSdkVersion); - initializeTheme(); - - return mTheme; } private void initializeTheme() {