我的基础适配器实现是否泄漏?

时间:2014-10-27 20:04:15

标签: android memory-leaks garbage-collection

所以这是我的基类适配器实现的内部类。请注意,它适用于可扩展列表视图,但我对所有列表视图使用相同的实例化过程

    class GamesAdapter extends BaseExpandableListAdapter
    {

        private Context context;


        public GamesAdapter(Context context)
        {
            this.context = context;

        }
    }

我的问题是,我如何处理这个上下文,因为在一些阅读之后持有一个上下文是对活动的引用所以当我旋转旧实例时可能不是GC因此内存泄漏。请帮帮我

2 个答案:

答案 0 :(得分:0)

当屏幕方向改变时,系统将(默认情况下)销毁当前活动并创建一个新活动,同时让您有机会保持其状态。你不能再次设置上下文吗?我不确定你自己处理配置是否有所改变。

个人而言,我只需要在需要上下文时传入getApplicationContext(),因为它不依赖于活动生命周期(它不是活动上下文)。但您也可以从getChildView()等中的View中获取上下文。

此外,如果您的列表将在配置更改上重建,无论如何您只是让它的构造函数接受您想要的活动上下文?它会更新吗?所以我不知道泄漏的位置。

答案 1 :(得分:0)

如果旋转屏幕,则会销毁Activity,但也会销毁BaseExpandableListAdapter实现。所以Android会创建一个新的Activity实例和一个适配器的新实例,你不必担心它。