4

我有一个FragmentPagerAdapter,我在选项卡之间切换ActionBarSherlock。在选项卡之间切换时,我隐藏一个Fragment并显示另一个Fragment

现在我有一个关于内存消耗的问题,如果我隐藏它,如何FragmentManager释放?Fragments当其中有更多Fragments内容时,是否可以手动Fragment Object从内存中删除 a ?

如果我分离 a Fragment,则保存对象,如果我删除 aFragment它仅从 中删除View,如果我设置Fragment = nullFragment则不释放,我总是得到一个片段:myActivity.getSupportFragmentManager().findFragmentByTag(myTag);

有人可以解释一下如何FragmentManager发布Views,如果有必要,我怎么能意识到这一点?

4

1 回答 1

3

来自安卓文档。

PagerAdapter 的实现,它将每个页面表示为一个 Fragment,只要用户可以返回该页面,它就会永久保存在 Fragment 管理器中。

因此,如果您担心内存问题,请不要使用 FragmentPagerAdapter,我建议您改用FragmentStatePagerAdapter

在 FragmentStatePagerAdapter 中,当页面对用户不可见时,它们的整个 Fragment 可能会被销毁,只保留该 Fragment 的已保存状态。与 FragmentPagerAdapter 相比,这允许分页器保留与每个访问的页面相关联的内存少得多,但代价是在页面之间切换时可能会产生更多开销。

FragmentStatePagerAdapter 的工作方式有点像列表视图,并且在内存方面更有效。

于 2013-01-30T04:47:44.417 回答