当我使用FragmentActivity时如何使用setRetainInstance(Fragment方法)?

时间:2014-01-03 22:21:42

标签: android android-fragments android-fragmentactivity

我想在setRetainInstance(true)上使用FragmentActivity,以便每次屏幕旋转时都不会调用onCreate()。我只想调整布局到屏幕调整,而无需重新建立我的位置服务连接并通知用户。该怎么做?

2 个答案:

答案 0 :(得分:1)

本段摘自我目前正在阅读的“专业Android 4应用程序开发”一书

  

如果销毁并重新启动活动以处理硬件   配置改变,如屏幕方向改变,你可以   请求保留您的Fragment实例。通过电话   你指定了Fragment的onCreate处理程序中的setRetainInstance   Fragment的实例不应该被杀死并重启   重新创建关联的活动。

我认为这很清楚。

问候!

答案 1 :(得分:1)

首先阅读片段documentation,了解setRetainInstance的作用(而不是)。

总结:

  

public void setRetainInstance(boolean retain)

     

在API级别11中添加控制是否保留片段实例   跨活动重新创建(例如从配置更改)。   这只能用于不在后栈中的片段。如果设置,   片段生命周期在活动时会略有不同   重新创建:

     

onDestroy()不会被调用(但onDetach()仍然会被调用,因为   片段正在与其当前活动分离)。   因为片段不存在,所以不会调用onCreate(Bundle)   重新创建。 onAttach(Activity)和onActivityCreated(Bundle)会   仍被称为。

考虑到这一点,请确保您的“位置服务连接”等位于不会死亡的地方(无论如何它们可能不应位于“活动”或“碎片”中)。