fix memory leak

This commit is contained in:
hyb1996
2017-02-15 21:58:31 +08:00
parent e2d5efa710
commit 1463011b7b
47 changed files with 193 additions and 102 deletions

View File

@@ -8,6 +8,7 @@ import android.view.accessibility.AccessibilityEvent;
import com.stardust.scriptdroid.App;
import com.stardust.view.accessibility.AccessibilityServiceUtils;
import java.lang.ref.WeakReference;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
@@ -21,7 +22,7 @@ public class AccessibilityWatchDogService extends AccessibilityService {
private static final String TAG = "AccessibilityWatchDog";
private static final SortedMap<Integer, AccessibilityDelegate> mDelegates = new TreeMap<>();
private static AccessibilityWatchDogService instance;
private static WeakReference<AccessibilityWatchDogService> instance;
public static void addDelegate(AccessibilityDelegate delegate, int uniquePriority) {
synchronized (mDelegates) {
@@ -62,7 +63,9 @@ public class AccessibilityWatchDogService extends AccessibilityService {
}
public static AccessibilityWatchDogService getInstance() {
return instance;
if (instance == null)
return null;
return instance.get();
}
@Override
@@ -85,12 +88,12 @@ public class AccessibilityWatchDogService extends AccessibilityService {
super.onServiceConnected();
// FIXME: 2017/2/12 有时在无障碍中开启服务后这里不会调用服务也不会运行安卓的BUG???
Log.v(TAG, "onServiceConnected");
instance = this;
instance = new WeakReference<>(this);
}
public static void disable() {
if (instance != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
instance.disableSelf();
if (instance != null && instance.get() != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
instance.get().disableSelf();
} else {
AccessibilityServiceUtils.goToAccessibilitySetting(App.getApp());
}