Handle SubSettings instance leaks in Index.java

Index's constructor will hold context of caller.
context.getApplicationContext() instead of context to prevent activity
leaks.

Bug: https://code.google.com/p/android/issues/detail?id=223322

Test: manual-start a new activity call Index constructor ,then pressed
back.

Change-Id: Ic12af62f9b718d328610a57985f64ca4629bab99
Signed-off-by: gaochong <gaochong@xiaomi.com>
This commit is contained in:
gaochong
2016-12-21 20:06:37 +08:00
parent a5249906ab
commit e4395bd751

View File

@@ -216,21 +216,21 @@ public class Index {
* A basic singleton * A basic singleton
*/ */
public static Index getInstance(Context context) { public static Index getInstance(Context context) {
if (sInstance == null) {
synchronized (Index.class) {
if (sInstance == null) { if (sInstance == null) {
sInstance = new Index(context.getApplicationContext(), BASE_AUTHORITY); sInstance = new Index(context.getApplicationContext(), BASE_AUTHORITY);
} }
}
}
return sInstance; return sInstance;
} }
public Index(Context context, String baseAuthority) { private Index(Context context, String baseAuthority) {
mContext = context; mContext = context;
mBaseAuthority = baseAuthority; mBaseAuthority = baseAuthority;
} }
public void setContext(Context context) {
mContext = context;
}
public boolean isAvailable() { public boolean isAvailable() {
return mIsAvailable.get(); return mIsAvailable.get();
} }