Tear down bars on destroy() and avoid null pointers.

Change-Id: Ie393689bbf2f0b28895bfde5098c883b5d4ea4a6
This commit is contained in:
John Spurlock
2014-01-15 14:13:59 -05:00
parent c6c243bf01
commit ab847cf16d
2 changed files with 13 additions and 6 deletions

View File

@ -1432,6 +1432,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
}
private void releaseFocus() {
if (mStatusBarWindow == null) return;
WindowManager.LayoutParams lp =
(WindowManager.LayoutParams) mStatusBarWindow.getLayoutParams();
lp.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
@ -1463,8 +1464,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
mHandler.sendEmptyMessage(MSG_CLOSE_SEARCH_PANEL);
}
mStatusBarWindow.cancelExpandHelper();
mStatusBarView.collapseAllPanels(true);
if (mStatusBarWindow != null) {
mStatusBarWindow.cancelExpandHelper();
mStatusBarView.collapseAllPanels(true);
}
}
public ViewPropertyAnimator setVisibilityWhenDone(
@ -1673,7 +1676,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
if (SPEW) Log.d(TAG, "makeExpandedInvisible: mExpandedVisible=" + mExpandedVisible
+ " mExpandedVisible=" + mExpandedVisible);
if (!mExpandedVisible) {
if (!mExpandedVisible || mStatusBarWindow == null) {
return;
}
@ -2076,7 +2079,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
// until status bar window is attached to the window manager,
// because... well, what's the point otherwise? And trying to
// run a ticker without being attached will crash!
if (n.getNotification().tickerText != null && mStatusBarWindow.getWindowToken() != null) {
if (n.getNotification().tickerText != null && mStatusBarWindow != null
&& mStatusBarWindow.getWindowToken() != null) {
if (0 == (mDisabled & (StatusBarManager.DISABLE_NOTIFICATION_ICONS
| StatusBarManager.DISABLE_NOTIFICATION_TICKER))) {
mTicker.addEntry(n);
@ -2726,9 +2730,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
super.destroy();
if (mStatusBarWindow != null) {
mWindowManager.removeViewImmediate(mStatusBarWindow);
mStatusBarWindow = null;
}
if (mNavigationBarView != null) {
mWindowManager.removeViewImmediate(mNavigationBarView);
mNavigationBarView = null;
}
mContext.unregisterReceiver(mBroadcastReceiver);
}

View File

@ -170,7 +170,7 @@ public class PhoneStatusBarView extends PanelBar {
mBar.makeExpandedInvisibleSoon();
mFadingPanel = null;
mLastFullyOpenedPanel = null;
if (mScrimColor != 0 && ActivityManager.isHighEndGfx()) {
if (mScrimColor != 0 && ActivityManager.isHighEndGfx() && mBar.mStatusBarWindow != null) {
mBar.mStatusBarWindow.setBackgroundColor(0);
}
}
@ -214,7 +214,8 @@ public class PhoneStatusBarView extends PanelBar {
Log.v(TAG, "panelExpansionChanged: f=" + frac);
}
if (panel == mFadingPanel && mScrimColor != 0 && ActivityManager.isHighEndGfx()) {
if (panel == mFadingPanel && mScrimColor != 0 && ActivityManager.isHighEndGfx()
&& mBar.mStatusBarWindow != null) {
if (mShouldFade) {
frac = mPanelExpandedFractionSum; // don't judge me
// let's start this 20% of the way down the screen