我创建了一个对象来管理 Activity 。像这样:
public class ActivityManager {
private static ActivityManager instance;
private static Stack<Activity> activityStack;
public void addActivity(Activity activity) {
activityStack.add(activity);
}
}
我在 BaseActivity 中使用它:
public class BaseActivity extends AppCompatActivity {
protected String TAG = "BaseActivity";
protected ActivityManager mActivityManger;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivityManger = ActivityManager.getInstance();
mActivityManger.addActivity(this);
}
}
在此示例中,静态对象持有 Activity 的引用。
这是内存泄漏吗?
为什么 leakcanary 什么都没发生?
如果集合中的添加函数将保存 Activity 的引用?
最佳答案
尝试故意泄露一些东西,例如将您的启动器 Activity 实例分配给静态字段。
或者尝试按回,我相信这会在 Activity 被销毁后触发泄漏(并且会出现 toast )并且 LeakCanary 将检测它是否泄漏。
或尝试引用here另一个样本
关于java - static Stack<Activity> 会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47217495/