静态堆栈<活动>是否会导致内存泄漏?

时间:2017-11-10 07:13:55

标签: java android memory-leaks

我创建了一个管理活动的对象。像这样:

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);

    }
}

在这个例子中,静态对象持有活动的引用。

这是内存泄漏吗?

泄密事件中为什么没有发生?

如果集合中的add-function将包含活动的引用?

1 个答案:

答案 0 :(得分:0)

尝试故意泄漏某些内容,例如将启动器活动实例分配给静态字段。

或者尝试按回来,我相信这会在Activity被销毁后触发泄漏(并且会出现吐司),LeakCanary会检测它是否泄漏。

或尝试将here推荐给另一个样本