Loading core/java/android/app/ActivityThread.java +5 −4 Original line number Diff line number Diff line Loading @@ -4627,11 +4627,12 @@ public final class ActivityThread { if ((activity == null) || (activity.mCurrentConfig == null)) { shouldChangeConfig = true; } else { // If the new config is the same as the config this Activity // is already running with then don't bother calling // onConfigurationChanged // If the new config is the same as the config this Activity is already // running with and the override config also didn't change, then don't // bother calling onConfigurationChanged. int diff = activity.mCurrentConfig.diff(newConfig); if (diff != 0) { if (diff != 0 || !mResourcesManager.isSameResourcesOverrideConfig(activityToken, amOverrideConfig)) { // Always send the task-level config changes. For system-level configuration, if // this activity doesn't handle any of the config changes, then don't bother // calling onConfigurationChanged as we're going to destroy it. Loading core/java/android/app/ResourcesManager.java +20 −0 Original line number Diff line number Diff line Loading @@ -364,6 +364,26 @@ public class ResourcesManager { return null; } /** * Check if activity resources have same override config as the provided on. * @param activityToken The Activity that resources should be associated with. * @param overrideConfig The override configuration to be checked for equality with. * @return true if activity resources override config matches the provided one or they are both * null, false otherwise. */ boolean isSameResourcesOverrideConfig(@Nullable IBinder activityToken, @Nullable Configuration overrideConfig) { synchronized (this) { final ActivityResources activityResources = activityToken != null ? mActivityResourceReferences.get(activityToken) : null; if (activityResources == null) { return overrideConfig == null; } else { return Objects.equals(activityResources.overrideConfig, overrideConfig); } } } private ActivityResources getOrCreateActivityResourcesStructLocked( @NonNull IBinder activityToken) { ActivityResources activityResources = mActivityResourceReferences.get(activityToken); Loading Loading
core/java/android/app/ActivityThread.java +5 −4 Original line number Diff line number Diff line Loading @@ -4627,11 +4627,12 @@ public final class ActivityThread { if ((activity == null) || (activity.mCurrentConfig == null)) { shouldChangeConfig = true; } else { // If the new config is the same as the config this Activity // is already running with then don't bother calling // onConfigurationChanged // If the new config is the same as the config this Activity is already // running with and the override config also didn't change, then don't // bother calling onConfigurationChanged. int diff = activity.mCurrentConfig.diff(newConfig); if (diff != 0) { if (diff != 0 || !mResourcesManager.isSameResourcesOverrideConfig(activityToken, amOverrideConfig)) { // Always send the task-level config changes. For system-level configuration, if // this activity doesn't handle any of the config changes, then don't bother // calling onConfigurationChanged as we're going to destroy it. Loading
core/java/android/app/ResourcesManager.java +20 −0 Original line number Diff line number Diff line Loading @@ -364,6 +364,26 @@ public class ResourcesManager { return null; } /** * Check if activity resources have same override config as the provided on. * @param activityToken The Activity that resources should be associated with. * @param overrideConfig The override configuration to be checked for equality with. * @return true if activity resources override config matches the provided one or they are both * null, false otherwise. */ boolean isSameResourcesOverrideConfig(@Nullable IBinder activityToken, @Nullable Configuration overrideConfig) { synchronized (this) { final ActivityResources activityResources = activityToken != null ? mActivityResourceReferences.get(activityToken) : null; if (activityResources == null) { return overrideConfig == null; } else { return Objects.equals(activityResources.overrideConfig, overrideConfig); } } } private ActivityResources getOrCreateActivityResourcesStructLocked( @NonNull IBinder activityToken) { ActivityResources activityResources = mActivityResourceReferences.get(activityToken); Loading