我想在setRetainInstance(true)
上使用FragmentActivity
,以便每次屏幕旋转时都不会调用onCreate()
。我只想调整布局到屏幕调整,而无需重新建立我的位置服务连接并通知用户。该怎么做?
答案 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)会 仍被称为。
考虑到这一点,请确保您的“位置服务连接”等位于不会死亡的地方(无论如何它们可能不应位于“活动”或“碎片”中)。