Merge "[sysui] Use weak reference for the listener in NavigationBarTransitions" into tm-qpr-dev
This commit is contained in:
@@ -36,6 +36,7 @@ import com.android.systemui.statusbar.phone.BarTransitions;
|
|||||||
import com.android.systemui.statusbar.phone.LightBarTransitionsController;
|
import com.android.systemui.statusbar.phone.LightBarTransitionsController;
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -76,15 +77,27 @@ public final class NavigationBarTransitions extends BarTransitions implements
|
|||||||
private List<DarkIntensityListener> mDarkIntensityListeners;
|
private List<DarkIntensityListener> mDarkIntensityListeners;
|
||||||
|
|
||||||
private final Handler mHandler = Handler.getMain();
|
private final Handler mHandler = Handler.getMain();
|
||||||
private final IWallpaperVisibilityListener mWallpaperVisibilityListener =
|
|
||||||
new IWallpaperVisibilityListener.Stub() {
|
static final class WallpaperVisibilityListener extends IWallpaperVisibilityListener.Stub {
|
||||||
|
private final WeakReference<NavigationBarTransitions> mSelf;
|
||||||
|
|
||||||
|
WallpaperVisibilityListener(NavigationBarTransitions self) {
|
||||||
|
mSelf = new WeakReference<>(self);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onWallpaperVisibilityChanged(boolean newVisibility,
|
public void onWallpaperVisibilityChanged(boolean newVisibility,
|
||||||
int displayId) throws RemoteException {
|
int displayId) throws RemoteException {
|
||||||
mWallpaperVisible = newVisibility;
|
NavigationBarTransitions self = mSelf.get();
|
||||||
mHandler.post(() -> applyLightsOut(true, false));
|
if (self == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
self.mWallpaperVisible = newVisibility;
|
||||||
|
self.mHandler.post(() -> self.applyLightsOut(true, false));
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
private final IWallpaperVisibilityListener mWallpaperVisibilityListener;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public NavigationBarTransitions(
|
public NavigationBarTransitions(
|
||||||
@@ -93,6 +106,7 @@ public final class NavigationBarTransitions extends BarTransitions implements
|
|||||||
LightBarTransitionsController.Factory lightBarTransitionsControllerFactory,
|
LightBarTransitionsController.Factory lightBarTransitionsControllerFactory,
|
||||||
DisplayTracker displayTracker) {
|
DisplayTracker displayTracker) {
|
||||||
super(view, R.drawable.nav_background);
|
super(view, R.drawable.nav_background);
|
||||||
|
|
||||||
mView = view;
|
mView = view;
|
||||||
mWindowManagerService = windowManagerService;
|
mWindowManagerService = windowManagerService;
|
||||||
mLightTransitionsController = lightBarTransitionsControllerFactory.create(this);
|
mLightTransitionsController = lightBarTransitionsControllerFactory.create(this);
|
||||||
@@ -101,6 +115,7 @@ public final class NavigationBarTransitions extends BarTransitions implements
|
|||||||
.getBoolean(R.bool.config_navigation_bar_enable_auto_dim_no_visible_wallpaper);
|
.getBoolean(R.bool.config_navigation_bar_enable_auto_dim_no_visible_wallpaper);
|
||||||
mDarkIntensityListeners = new ArrayList();
|
mDarkIntensityListeners = new ArrayList();
|
||||||
|
|
||||||
|
mWallpaperVisibilityListener = new WallpaperVisibilityListener(this);
|
||||||
try {
|
try {
|
||||||
mWallpaperVisible = mWindowManagerService.registerWallpaperVisibilityListener(
|
mWallpaperVisible = mWindowManagerService.registerWallpaperVisibilityListener(
|
||||||
mWallpaperVisibilityListener, mDisplayTracker.getDefaultDisplayId());
|
mWallpaperVisibilityListener, mDisplayTracker.getDefaultDisplayId());
|
||||||
|
|||||||
Reference in New Issue
Block a user