release-request-31f776a2-f093-4abe-9235-1702f8bafc9d-for-git_oc-dr1-release-4054002 snap-temp-L42500000069020014
Change-Id: I21de980012ec31d146e6f7372db071fc81cbf1ea
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 996b183..361e97a 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -29,10 +29,13 @@
<application android:label="@string/hvac_label"
android:icon="@drawable/ic_launcher_hvac"
android:persistent="true">
- <service android:name=".HvacController" android:exported="false" />
+ <service android:name=".HvacController"
+ android:singleUser="true"
+ android:exported="false" />
<service android:name=".HvacUiService"
- android:exported="false"/>
+ android:singleUser="true"
+ android:exported="false"/>
<receiver android:name=".BootCompleteReceiver">
<intent-filter>
diff --git a/src/com/android/car/hvac/HvacUiService.java b/src/com/android/car/hvac/HvacUiService.java
index 76eb19e..0478790 100644
--- a/src/com/android/car/hvac/HvacUiService.java
+++ b/src/com/android/car/hvac/HvacUiService.java
@@ -36,12 +36,17 @@
import com.android.car.hvac.ui.SystemUiObserver;
import com.android.car.hvac.ui.TemperatureBarOverlay;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Creates a sliding panel for HVAC controls and adds it to the window manager above SystemUI.
*/
public class HvacUiService extends Service {
private static final String TAG = "HvacUiService";
+ private final List<View> mAddedViews = new ArrayList<>();
+
private WindowManager mWindowManager;
private View mPanel;
@@ -130,7 +135,7 @@
mPanel = mContainer.findViewById(R.id.hvac_center_panel);
mPanel.getLayoutParams().height = mPanelCollapsedHeight;
- mWindowManager.addView(mContainer, params);
+ addViewToWindowManagerAndTrack(mContainer, params);
createTemperatureBars(inflater);
mHvacPanelController = new HvacPanelController(this /* context */, mContainer,
@@ -158,9 +163,13 @@
adjustPosition(mPassengerTemperatureBar, visible);
adjustPosition(mContainer, visible);
});
- mWindowManager.addView(observer, params);
+ addViewToWindowManagerAndTrack(observer, params);
}
+ private void addViewToWindowManagerAndTrack(View view, WindowManager.LayoutParams params) {
+ mWindowManager.addView(view, params);
+ mAddedViews.add(view);
+ }
private void adjustPosition(View v, boolean systemUiVisible) {
WindowManager.LayoutParams lp = (WindowManager.LayoutParams) v.getLayoutParams();
@@ -175,7 +184,10 @@
@Override
public void onDestroy() {
- mWindowManager.removeView(mPanel);
+ for (View view : mAddedViews) {
+ mWindowManager.removeView(view);
+ }
+ mAddedViews.clear();
if(mHvacController != null){
unbindService(mServiceConnection);
}
@@ -235,7 +247,7 @@
disableAnimations(params);
button.setLayoutParams(params);
- mWindowManager.addView(button, params);
+ addViewToWindowManagerAndTrack(button, params);
return button;
}
@@ -254,7 +266,7 @@
ViewGroup overlay = new LinearLayout(this /* context */);
overlay.setLayoutParams(params);
- mWindowManager.addView(overlay, params);
+ addViewToWindowManagerAndTrack(overlay, params);
return overlay;
}