Android碎片,强制手动释放视图

4
我有一个FragmentPagerAdapter并在ActionBarSherlock Tabs之间切换。当切换标签时,我隐藏一个Fragment并显示另一个Fragment。
现在我有一个关于内存消耗的问题,如果我隐藏它,FragmentManager如何释放Fragments?当其中有更多的Fragments时,是否可以手动从内存中删除Fragment对象?
如果我分离一个Fragment,则该对象将被保存,如果我删除一个Fragment,则它仅从View中删除,如果我将Fragment = null,则Fragment不会被释放,我总是会得到一个Fragment:myActivity.getSupportFragmentManager().findFragmentByTag(myTag);
有人能解释一下FragmentManager如何释放Views,是否必要以及我如何实现这一点吗?
1个回答

3

来自android文档的实现。

PagerAdapter的实现方式将每个页面表示为一个Fragment,并将其持久地保存在片段管理器中,只要用户可以返回该页面。

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

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

FragmentStatePagerAdapter的工作方式有点像listview,在内存方面更有效率。


好的,谢谢。我认为在片段中有一些必要的更改。我意识到除了Viewpager解决方案(但它总是预加载下一个标签页)之外只有肮脏的变通方法。当使用选项卡时,我保存视图状态并基于变量重新创建视图状态。 - brokedid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接