Fix memory leaks in Settings

Bug: 80507279
Test: inspected hprof before and after fix
Change-Id: I6ea2925695deb6261263649e858484e1667ec522
This commit is contained in:
Fan Zhang
2018-06-07 11:33:48 -07:00
parent 7bc2f98188
commit 838f6c7812
4 changed files with 40 additions and 31 deletions

View File

@@ -21,7 +21,6 @@ import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.net.ConnectivityManager;
import android.os.UserManager;
import androidx.annotation.Keep;
import com.android.settings.accounts.AccountFeatureProvider;
import com.android.settings.accounts.AccountFeatureProviderImpl;
@@ -54,6 +53,8 @@ import com.android.settings.users.UserFeatureProvider;
import com.android.settings.users.UserFeatureProviderImpl;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import androidx.annotation.Keep;
/**
* {@link FeatureFactory} implementation for AOSP Settings.
*/
@@ -93,7 +94,8 @@ public class FeatureFactoryImpl extends FeatureFactory {
@Override
public PowerUsageFeatureProvider getPowerUsageFeatureProvider(Context context) {
if (mPowerUsageFeatureProvider == null) {
mPowerUsageFeatureProvider = new PowerUsageFeatureProviderImpl(context);
mPowerUsageFeatureProvider = new PowerUsageFeatureProviderImpl(
context.getApplicationContext());
}
return mPowerUsageFeatureProvider;
}
@@ -101,7 +103,8 @@ public class FeatureFactoryImpl extends FeatureFactory {
@Override
public DashboardFeatureProvider getDashboardFeatureProvider(Context context) {
if (mDashboardFeatureProvider == null) {
mDashboardFeatureProvider = new DashboardFeatureProviderImpl(context);
mDashboardFeatureProvider = new DashboardFeatureProviderImpl(
context.getApplicationContext());
}
return mDashboardFeatureProvider;
}
@@ -117,10 +120,11 @@ public class FeatureFactoryImpl extends FeatureFactory {
@Override
public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
if (mApplicationFeatureProvider == null) {
mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(context,
context.getPackageManager(),
final Context appContext = context.getApplicationContext();
mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(appContext,
appContext.getPackageManager(),
AppGlobals.getPackageManager(),
(DevicePolicyManager) context
(DevicePolicyManager) appContext
.getSystemService(Context.DEVICE_POLICY_SERVICE));
}
return mApplicationFeatureProvider;
@@ -137,12 +141,14 @@ public class FeatureFactoryImpl extends FeatureFactory {
@Override
public EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(Context context) {
if (mEnterprisePrivacyFeatureProvider == null) {
mEnterprisePrivacyFeatureProvider = new EnterprisePrivacyFeatureProviderImpl(context,
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE),
context.getPackageManager(),
UserManager.get(context),
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE),
context.getResources());
final Context appContext = context.getApplicationContext();
mEnterprisePrivacyFeatureProvider = new EnterprisePrivacyFeatureProviderImpl(appContext,
(DevicePolicyManager) appContext.getSystemService(
Context.DEVICE_POLICY_SERVICE),
appContext.getPackageManager(),
UserManager.get(appContext),
(ConnectivityManager) appContext.getSystemService(Context.CONNECTIVITY_SERVICE),
appContext.getResources());
}
return mEnterprisePrivacyFeatureProvider;
}
@@ -171,7 +177,8 @@ public class FeatureFactoryImpl extends FeatureFactory {
@Override
public SuggestionFeatureProvider getSuggestionFeatureProvider(Context context) {
if (mSuggestionFeatureProvider == null) {
mSuggestionFeatureProvider = new SuggestionFeatureProviderImpl(context);
mSuggestionFeatureProvider = new SuggestionFeatureProviderImpl(
context.getApplicationContext());
}
return mSuggestionFeatureProvider;
}
@@ -179,7 +186,7 @@ public class FeatureFactoryImpl extends FeatureFactory {
@Override
public UserFeatureProvider getUserFeatureProvider(Context context) {
if (mUserFeatureProvider == null) {
mUserFeatureProvider = new UserFeatureProviderImpl(context);
mUserFeatureProvider = new UserFeatureProviderImpl(context.getApplicationContext());
}
return mUserFeatureProvider;
}