Make ApplicationsState.Session lifecycle-aware

Bug: 66682989
Test: RunSettingsRoboTests
Change-Id: Idf56788fcae22639b7bf604a8c73cd5f0ff2da16
This commit is contained in:
Tony Mantler
2017-09-21 15:50:27 -07:00
parent 10ba1f1ee7
commit 76cbd4b3b2
8 changed files with 13 additions and 55 deletions

View File

@@ -92,7 +92,7 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
mApplicationFeatureProvider = FeatureFactory.getFactory(activity) mApplicationFeatureProvider = FeatureFactory.getFactory(activity)
.getApplicationFeatureProvider(activity); .getApplicationFeatureProvider(activity);
mState = ApplicationsState.getInstance(activity.getApplication()); mState = ApplicationsState.getInstance(activity.getApplication());
mSession = mState.newSession(this); mSession = mState.newSession(this, getLifecycle());
mDpm = new DevicePolicyManagerWrapper( mDpm = new DevicePolicyManagerWrapper(
(DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE)); (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE));
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE); mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
@@ -107,7 +107,6 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
mSession.resume();
mAppsControlDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(), mAppsControlDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
UserManager.DISALLOW_APPS_CONTROL, mUserId); UserManager.DISALLOW_APPS_CONTROL, mUserId);
mAppsControlDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(getActivity(), mAppsControlDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(getActivity(),
@@ -118,16 +117,10 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
} }
} }
@Override
public void onPause() {
mSession.pause();
super.onPause();
}
@Override @Override
public void onDestroy() { public void onDestroy() {
stopListeningToPackageRemove(); stopListeningToPackageRemove();
mSession.release();
super.onDestroy(); super.onDestroy();
} }

View File

@@ -50,15 +50,15 @@ public abstract class AppStateBaseBridge implements ApplicationsState.Callbacks
public void resume() { public void resume() {
mHandler.sendEmptyMessage(BackgroundHandler.MSG_LOAD_ALL); mHandler.sendEmptyMessage(BackgroundHandler.MSG_LOAD_ALL);
mAppSession.resume(); mAppSession.onResume();
} }
public void pause() { public void pause() {
mAppSession.pause(); mAppSession.onPause();
} }
public void release() { public void release() {
mAppSession.release(); mAppSession.onDestroy();
} }
public void forceUpdate(String pkg, int uid) { public void forceUpdate(String pkg, int uid) {

View File

@@ -988,7 +988,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
if (DEBUG) Log.i(TAG, "Resume! mResumed=" + mResumed); if (DEBUG) Log.i(TAG, "Resume! mResumed=" + mResumed);
if (!mResumed) { if (!mResumed) {
mResumed = true; mResumed = true;
mSession.resume(); mSession.onResume();
mLastSortMode = sort; mLastSortMode = sort;
if (mExtraInfoBridge != null) { if (mExtraInfoBridge != null) {
mExtraInfoBridge.resume(); mExtraInfoBridge.resume();
@@ -1002,7 +1002,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
public void pause() { public void pause() {
if (mResumed) { if (mResumed) {
mResumed = false; mResumed = false;
mSession.pause(); mSession.onPause();
if (mExtraInfoBridge != null) { if (mExtraInfoBridge != null) {
mExtraInfoBridge.pause(); mExtraInfoBridge.pause();
} }
@@ -1015,7 +1015,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
} }
public void release() { public void release() {
mSession.release(); mSession.onDestroy();
if (mExtraInfoBridge != null) { if (mExtraInfoBridge != null) {
mExtraInfoBridge.release(); mExtraInfoBridge.release();
} }

View File

@@ -66,7 +66,7 @@ public class ManageDomainUrls extends SettingsPreferenceFragment
setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext())); setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
mApplicationsState = ApplicationsState.getInstance( mApplicationsState = ApplicationsState.getInstance(
(Application) getContext().getApplicationContext()); (Application) getContext().getApplicationContext());
mSession = mApplicationsState.newSession(this); mSession = mApplicationsState.newSession(this, getLifecycle());
setHasOptionsMenu(true); setHasOptionsMenu(true);
} }
@@ -75,24 +75,6 @@ public class ManageDomainUrls extends SettingsPreferenceFragment
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
} }
@Override
public void onResume() {
super.onResume();
mSession.resume();
}
@Override
public void onPause() {
super.onPause();
mSession.pause();
}
@Override
public void onDestroy() {
super.onDestroy();
mSession.release();
}
@Override @Override
public void onRunningStateChanged(boolean running) { public void onRunningStateChanged(boolean running) {
} }

View File

@@ -32,7 +32,6 @@ import com.android.settings.DividerPreference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.applications.AppStateBaseBridge.Callback; import com.android.settings.applications.AppStateBaseBridge.Callback;
import com.android.settings.applications.AppStateSmsPremBridge.SmsState; import com.android.settings.applications.AppStateSmsPremBridge.SmsState;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.notification.EmptyTextSettings; import com.android.settings.notification.EmptyTextSettings;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState;
@@ -53,7 +52,7 @@ public class PremiumSmsAccess extends EmptyTextSettings implements Callback, Cal
super.onCreate(icicle); super.onCreate(icicle);
mApplicationsState = ApplicationsState.getInstance((Application) mApplicationsState = ApplicationsState.getInstance((Application)
getContext().getApplicationContext()); getContext().getApplicationContext());
mSession = mApplicationsState.newSession(this); mSession = mApplicationsState.newSession(this, getLifecycle());
mSmsBackend = new AppStateSmsPremBridge(getContext(), mApplicationsState, this); mSmsBackend = new AppStateSmsPremBridge(getContext(), mApplicationsState, this);
} }
@@ -66,21 +65,18 @@ public class PremiumSmsAccess extends EmptyTextSettings implements Callback, Cal
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
mSession.resume();
mSmsBackend.resume(); mSmsBackend.resume();
} }
@Override @Override
public void onPause() { public void onPause() {
mSmsBackend.pause(); mSmsBackend.pause();
mSession.pause();
super.onPause(); super.onPause();
} }
@Override @Override
public void onDestroy() { public void onDestroy() {
mSmsBackend.release(); mSmsBackend.release();
mSession.release();
super.onDestroy(); super.onDestroy();
} }

View File

@@ -61,7 +61,7 @@ public class DataSaverSummary extends SettingsPreferenceFragment
(Application) getContext().getApplicationContext()); (Application) getContext().getApplicationContext());
mDataSaverBackend = new DataSaverBackend(getContext()); mDataSaverBackend = new DataSaverBackend(getContext());
mDataUsageBridge = new AppStateDataUsageBridge(mApplicationsState, this, mDataSaverBackend); mDataUsageBridge = new AppStateDataUsageBridge(mApplicationsState, this, mDataSaverBackend);
mSession = mApplicationsState.newSession(this); mSession = mApplicationsState.newSession(this, getLifecycle());
} }
@Override @Override
@@ -78,7 +78,6 @@ public class DataSaverSummary extends SettingsPreferenceFragment
mDataSaverBackend.refreshWhitelist(); mDataSaverBackend.refreshWhitelist();
mDataSaverBackend.refreshBlacklist(); mDataSaverBackend.refreshBlacklist();
mDataSaverBackend.addListener(this); mDataSaverBackend.addListener(this);
mSession.resume();
mDataUsageBridge.resume(); mDataUsageBridge.resume();
} }
@@ -87,7 +86,6 @@ public class DataSaverSummary extends SettingsPreferenceFragment
super.onPause(); super.onPause();
mDataSaverBackend.remListener(this); mDataSaverBackend.remListener(this);
mDataUsageBridge.pause(); mDataUsageBridge.pause();
mSession.pause();
} }
@Override @Override

View File

@@ -64,7 +64,7 @@ public class UnrestrictedDataAccess extends SettingsPreferenceFragment
(Application) getContext().getApplicationContext()); (Application) getContext().getApplicationContext());
mDataSaverBackend = new DataSaverBackend(getContext()); mDataSaverBackend = new DataSaverBackend(getContext());
mDataUsageBridge = new AppStateDataUsageBridge(mApplicationsState, this, mDataSaverBackend); mDataUsageBridge = new AppStateDataUsageBridge(mApplicationsState, this, mDataSaverBackend);
mSession = mApplicationsState.newSession(this); mSession = mApplicationsState.newSession(this, getLifecycle());
mShowSystem = icicle != null && icicle.getBoolean(EXTRA_SHOW_SYSTEM); mShowSystem = icicle != null && icicle.getBoolean(EXTRA_SHOW_SYSTEM);
mFilter = mShowSystem ? ApplicationsState.FILTER_ALL_ENABLED mFilter = mShowSystem ? ApplicationsState.FILTER_ALL_ENABLED
: ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER; : ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER;
@@ -109,7 +109,6 @@ public class UnrestrictedDataAccess extends SettingsPreferenceFragment
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
mSession.resume();
mDataUsageBridge.resume(); mDataUsageBridge.resume();
} }
@@ -117,13 +116,11 @@ public class UnrestrictedDataAccess extends SettingsPreferenceFragment
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
mDataUsageBridge.pause(); mDataUsageBridge.pause();
mSession.pause();
} }
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
mSession.release();
mDataUsageBridge.release(); mDataUsageBridge.release();
} }

View File

@@ -28,7 +28,6 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo; import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo;
import android.content.res.Resources; import android.content.res.Resources;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask; import android.os.AsyncTask;
@@ -77,7 +76,7 @@ import java.util.List;
*/ */
//TODO(b/35810915): Make InstalledAppDetails use this controller //TODO(b/35810915): Make InstalledAppDetails use this controller
public class AppButtonsPreferenceController extends AbstractPreferenceController implements public class AppButtonsPreferenceController extends AbstractPreferenceController implements
PreferenceControllerMixin, LifecycleObserver, OnResume, OnPause, OnDestroy, PreferenceControllerMixin, LifecycleObserver, OnResume, OnDestroy,
ApplicationsState.Callbacks { ApplicationsState.Callbacks {
public static final String APP_CHG = "chg"; public static final String APP_CHG = "chg";
@@ -144,7 +143,7 @@ public class AppButtonsPreferenceController extends AbstractPreferenceController
if (packageName != null) { if (packageName != null) {
mAppEntry = mState.getEntry(packageName, mUserId); mAppEntry = mState.getEntry(packageName, mUserId);
mSession = mState.newSession(this); mSession = mState.newSession(this, lifecycle);
lifecycle.addObserver(this); lifecycle.addObserver(this);
} else { } else {
mFinishing = true; mFinishing = true;
@@ -179,7 +178,6 @@ public class AppButtonsPreferenceController extends AbstractPreferenceController
@Override @Override
public void onResume() { public void onResume() {
mSession.resume();
if (isAvailable() && !mFinishing) { if (isAvailable() && !mFinishing) {
mAppsControlDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(mActivity, mAppsControlDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(mActivity,
UserManager.DISALLOW_APPS_CONTROL, mUserId); UserManager.DISALLOW_APPS_CONTROL, mUserId);
@@ -192,15 +190,9 @@ public class AppButtonsPreferenceController extends AbstractPreferenceController
} }
} }
@Override
public void onPause() {
mSession.pause();
}
@Override @Override
public void onDestroy() { public void onDestroy() {
stopListeningToPackageRemove(); stopListeningToPackageRemove();
mSession.release();
} }
private class UninstallAndDisableButtonListener implements View.OnClickListener { private class UninstallAndDisableButtonListener implements View.OnClickListener {