summaryrefslogtreecommitdiff
path: root/src/com/android/launcher3/util/DisplayController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/util/DisplayController.java')
-rw-r--r--src/com/android/launcher3/util/DisplayController.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/com/android/launcher3/util/DisplayController.java b/src/com/android/launcher3/util/DisplayController.java
index e2c0a32bb0..94f29dbbf7 100644
--- a/src/com/android/launcher3/util/DisplayController.java
+++ b/src/com/android/launcher3/util/DisplayController.java
@@ -55,7 +55,7 @@ import java.util.Set;
* Utility class to cache properties of default display to avoid a system RPC on every call.
*/
@SuppressLint("NewApi")
-public class DisplayController implements DisplayListener, ComponentCallbacks {
+public class DisplayController implements DisplayListener, ComponentCallbacks, SafeCloseable {
private static final String TAG = "DisplayController";
@@ -79,6 +79,7 @@ public class DisplayController implements DisplayListener, ComponentCallbacks {
private final ArrayList<DisplayInfoChangeListener> mListeners = new ArrayList<>();
private Info mInfo;
+ private boolean mDestroyed = false;
private DisplayController(Context context) {
mContext = context;
@@ -111,6 +112,17 @@ public class DisplayController implements DisplayListener, ComponentCallbacks {
}
@Override
+ public void close() {
+ mDestroyed = true;
+ if (mWindowContext != null) {
+ mWindowContext.unregisterComponentCallbacks(this);
+ } else {
+ // TODO: unregister broadcast receiver
+ }
+ mDM.unregisterDisplayListener(this);
+ }
+
+ @Override
public final void onDisplayAdded(int displayId) { }
@Override
@@ -157,6 +169,9 @@ public class DisplayController implements DisplayListener, ComponentCallbacks {
* Only used for pre-S
*/
private void onConfigChanged(Intent intent) {
+ if (mDestroyed) {
+ return;
+ }
Configuration config = mContext.getResources().getConfiguration();
if (mInfo.fontScale != config.fontScale || mInfo.densityDpi != config.densityDpi) {
Log.d(TAG, "Configuration changed, notifying listeners");