summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorTiger Huang <tigerhuang@google.com>2019-05-28 14:36:18 +0800
committerTiger Huang <tigerhuang@google.com>2019-05-28 07:29:56 +0000
commit968064bed0a43b019cb7d84bed7493f6f78fda5e (patch)
treeda20741a18c82cc47e6252f0f8ec89f65b030570 /core/java
parenta80dd06e1768be4b48af0f83842a43189b5a0019 (diff)
Fix a bug about missing onConfigurationChanged
The original logic sends the new configuration to the non-activity components only if there is any public field changed. However, it doesn't use the latest configuration to compare to the current one, which caused ActivityThread dropping some onConfigurationChanged callbacks. This CL uses the latest configuration to compare to the current one. Fix: 132653657 Test: Steps in the bug Change-Id: I969ef189c36ba1903503d8b7de5641103aed8cf3
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/app/ActivityThread.java19
1 files changed, 10 insertions, 9 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 1e982bc48c19..3a74f7dc2ea5 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -5564,15 +5564,9 @@ public final class ActivityThread extends ClientTransactionHandler {
private void handleConfigurationChanged(Configuration config, CompatibilityInfo compat) {
- int configDiff = 0;
-
- // This flag tracks whether the new configuration is fundamentally equivalent to the
- // existing configuration. This is necessary to determine whether non-activity
- // callbacks should receive notice when the only changes are related to non-public fields.
- // We do not gate calling {@link #performActivityConfigurationChanged} based on this flag
- // as that method uses the same check on the activity config override as well.
- final boolean equivalent = config != null && mConfiguration != null
- && (0 == mConfiguration.diffPublicOnly(config));
+ int configDiff;
+ boolean equivalent;
+
final Theme systemTheme = getSystemContext().getTheme();
final Theme systemUiTheme = getSystemUiContext().getTheme();
@@ -5590,6 +5584,13 @@ public final class ActivityThread extends ClientTransactionHandler {
return;
}
+ // This flag tracks whether the new configuration is fundamentally equivalent to the
+ // existing configuration. This is necessary to determine whether non-activity callbacks
+ // should receive notice when the only changes are related to non-public fields.
+ // We do not gate calling {@link #performActivityConfigurationChanged} based on this
+ // flag as that method uses the same check on the activity config override as well.
+ equivalent = mConfiguration != null && (0 == mConfiguration.diffPublicOnly(config));
+
if (DEBUG_CONFIGURATION) Slog.v(TAG, "Handle configuration changed: "
+ config);