From: jackqdyulei Date: Mon, 10 Jul 2017 20:22:50 +0000 (-0700) Subject: Bind service in onCreate X-Git-Tag: android-x86-9.0-r1~491^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=4a2bbadcd4007bc7bd07f3dc5dfd774ee59b83f1;p=android-x86%2Fpackages-apps-Settings.git Bind service in onCreate This cl puts the binding to onCreate instead of constructor, so preference controller won't bind/unbind service without registering Lifecycle. Bug: 62105045 Test: RunSettingsRoboTests Change-Id: I1e60d4b6ad7270aa5d04b7ec9fae1d3200fccc5f --- diff --git a/src/com/android/settings/network/TetherPreferenceController.java b/src/com/android/settings/network/TetherPreferenceController.java index 02290562a4..802b21e3e4 100644 --- a/src/com/android/settings/network/TetherPreferenceController.java +++ b/src/com/android/settings/network/TetherPreferenceController.java @@ -25,6 +25,7 @@ import android.content.IntentFilter; import android.database.ContentObserver; import android.net.ConnectivityManager; import android.net.Uri; +import android.os.Bundle; import android.os.Handler; import android.os.UserHandle; import android.provider.Settings; @@ -38,6 +39,7 @@ import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; +import com.android.settingslib.core.lifecycle.events.OnCreate; import com.android.settingslib.core.lifecycle.events.OnDestroy; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; @@ -45,11 +47,12 @@ import com.android.settingslib.core.lifecycle.events.OnResume; import java.util.concurrent.atomic.AtomicReference; import static android.os.UserManager.DISALLOW_CONFIG_TETHERING; + import static com.android.settingslib.RestrictedLockUtils.checkIfRestrictionEnforced; import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction; -public class TetherPreferenceController extends AbstractPreferenceController - implements PreferenceControllerMixin, LifecycleObserver, OnResume, OnPause, OnDestroy { +public class TetherPreferenceController extends AbstractPreferenceController implements + PreferenceControllerMixin, LifecycleObserver, OnCreate, OnResume, OnPause, OnDestroy { private static final String KEY_TETHER_SETTINGS = "tether_settings"; @@ -57,7 +60,8 @@ public class TetherPreferenceController extends AbstractPreferenceController private final AtomicReference mBluetoothPan; private final ConnectivityManager mConnectivityManager; private final BluetoothAdapter mBluetoothAdapter; - private final BluetoothProfile.ServiceListener mBtProfileServiceListener = + @VisibleForTesting + final BluetoothProfile.ServiceListener mBtProfileServiceListener = new android.bluetooth.BluetoothProfile.ServiceListener() { public void onServiceConnected(int profile, BluetoothProfile proxy) { mBluetoothPan.set((BluetoothPan) proxy); @@ -93,10 +97,6 @@ public class TetherPreferenceController extends AbstractPreferenceController if (lifecycle != null) { lifecycle.addObserver(this); } - if (mBluetoothAdapter != null) { - mBluetoothAdapter.getProfileProxy(context, mBtProfileServiceListener, - BluetoothProfile.PAN); - } } @Override @@ -132,6 +132,14 @@ public class TetherPreferenceController extends AbstractPreferenceController } @Override + public void onCreate(Bundle savedInstanceState) { + if (mBluetoothAdapter != null) { + mBluetoothAdapter.getProfileProxy(mContext, mBtProfileServiceListener, + BluetoothProfile.PAN); + } + } + + @Override public void onResume() { if (mAirplaneModeObserver == null) { mAirplaneModeObserver = new SettingObserver(); @@ -140,7 +148,7 @@ public class TetherPreferenceController extends AbstractPreferenceController mTetherReceiver = new TetherBroadcastReceiver(); } mContext.registerReceiver( - mTetherReceiver, new IntentFilter(ConnectivityManager.ACTION_TETHER_STATE_CHANGED)); + mTetherReceiver, new IntentFilter(ConnectivityManager.ACTION_TETHER_STATE_CHANGED)); mContext.getContentResolver() .registerContentObserver(mAirplaneModeObserver.uri, false, mAirplaneModeObserver); } diff --git a/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java index 4ae8c2c703..b8a6d28a25 100644 --- a/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java @@ -16,7 +16,6 @@ package com.android.settings.network; - import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothPan; import android.bluetooth.BluetoothProfile; @@ -78,6 +77,14 @@ public class TetherPreferenceControllerTest { } @Test + public void lifeCycle_onCreate_shouldInitBluetoothPan() { + mController.onCreate(null); + + verify(mBluetoothAdapter).getProfileProxy(mContext, mController.mBtProfileServiceListener, + BluetoothProfile.PAN); + } + + @Test public void goThroughLifecycle_shouldDestoryBluetoothProfile() { final BluetoothPan pan = mock(BluetoothPan.class); final AtomicReference panRef = @@ -161,7 +168,8 @@ public class TetherPreferenceControllerTest { mController.onResume(); verify(mContext).registerReceiver( - any(TetherPreferenceController.TetherBroadcastReceiver.class), any(IntentFilter.class)); + any(TetherPreferenceController.TetherBroadcastReceiver.class), + any(IntentFilter.class)); } @Test @@ -172,7 +180,7 @@ public class TetherPreferenceControllerTest { mController.onPause(); verify(mContext).unregisterReceiver( - any(TetherPreferenceController.TetherBroadcastReceiver.class)); + any(TetherPreferenceController.TetherBroadcastReceiver.class)); } @Test