我在我的 Android 应用程序中发现了可用的内存泄漏,LeakCanary 总是说 AppOpsManager OnOpChangedListener 回调函数对 MainActivity 有泄漏。我在 google 和 SF 上搜索了很多,但没有找到任何解决方案。下面是我的代码,请帮助解决这个内存泄漏。
@Override
protected void onCreate(Bundle savedInstanceState) {
appOpsManager = (AppOpsManager) getApplicationContext().getSystemService(Context.APP_OPS_SERVICE);
appOpsManager.startWatchingMode(AppOpsManager.OPSTR_GET_USAGE_STATS, getApplicationContext().getPackageName(), usageOpListener);
}
private final AppOpsManager.OnOpChangedListener usageOpListener = new AppOpsManager.OnOpChangedListener() {
@Override
public void onOpChanged(String op, String packageName) {
if (packageName == null || getApplicationContext().getPackageName().equals(packageName)) {
if (AppOpsManager.OPSTR_GET_USAGE_STATS.equals(op)) {
Intent myIntent = new Intent(getApplicationContext(), MainActivity.class);
getApplicationContext().startActivity(myIntent);
}
}
}
};
@Override
protected void onDestroy() {
appOpsManager.stopWatchingMode(usageOpListener);
}