好吧,我创建了一个Fragment
一些UI(夫妇文本框和东西),我用setRetainInstance
因为进出口运行的AsyncTask
来查询服务器(要求只能用一次发送),我需要的结果为AsyncTask
。所以我的问题是: 用UI保留整个片段是错误的吗?我看到一些例子,其中人们使用额外的Fragment
来使用setRetainInstance
但是..有没有什么错误不使用额外的? 如果使用setRetainInstance
时出现问题,为什么?在文档中找不到关于此的任何信息。setRetainInstance片段与UI的Android
7
A
回答
-1
如果你锁定你的方向,那么你应该没问题。否则,如果您保留与特定活动实例关联的小部件,则最终可能会发生内存泄漏。
2
即使您使用setRetainInstance(true)
,当您旋转时(您将调用onDestroyView
,然后onCreateView
),您的片段仍然会重新创建它的视图。只要您不保留对过去onDestroyView
的视图的引用,就不会有任何旧活动的泄漏。最好的方法是明确地清空onDestroyView
中的引用,但onCreateView
中的代码通常会覆盖这些引用。
网上有很多例子(包括一些官方的例子),其中人们使用单独的片段(无视图)来保留数据。假设我上面说的是正确的,那么这是不必要的(为了防止泄漏)。在很多情况下,如果您使用一个单独的片段,而这个片段的责任仅仅是处理数据而不担心UI,那么您可能会得到更简洁的代码/架构。
您可以通过using Eclipse MAT旋转后检查活动环境是否正在泄漏。
相关问题
- 1. Android片段和setRetainInstance(true)
- 2. 片段setRetainInstance不工作(支持Android LIB)
- 3. 片段中onSaveInstanceState和setRetainInstance的使用
- 4. Android片段setRetainInstance(true)不起作用(Android支持库)
- 5. Android非UI片段
- 6. 片段setRetainInstance(true)不起作用
- 7. setretaininstance(真)使用无头片段
- 8. Android片段setRetainInstance(true)在后台不工作
- 9. Android非UI片段使用
- 10. setRetainInstance(true),但UI不出现
- 11. Android片段backstack(更改最新更改相同片段的UI)
- 12. Android:活动与片段(片段顶部)
- 13. tabview与Android中的片段
- 14. Android的Socket.IO与片段
- 15. Android的Facebook SDK与片段
- 16. Android的片段与GLSurfaceView
- 17. 的Android RecyclerView与片段
- 18. setRetainInstance(true)不保留片段的成员变量
- 19. 在方向更改期间使用setRetainInstance(true)的片段
- 20. 为什么片段的setRetainInstance(true)方法不起作用?
- 21. Android UI如何叠加片段视图?
- 22. Android Smack与MVP片段
- 23. android使用片段与
- 24. Android片段onResume与onCreateView
- 25. 使用viewPager与片段android?
- 26. 验证UI:片段
- 27. Android的方向更改与片段处理的片段活动
- 28. 在地图碎片初始位置.setRetainInstance
- 29. 的Android YouTubePlayer与片段 内的玩家
- 30. 片段android片段调用
但不是与片段相关的小部件?也许我错过了Fragments的工作原理。 – Raykud
即使方向锁定,这可能会有问题。 Android为任何配置更改重新创建视图。而配置更改可以是显示旋转(通常情况下),语言更改,键盘连接/分离等。照顾屏幕旋转并不能解决整个问题。 – sstn