【发布时间】:2013-08-08 03:23:56
【问题描述】:
我有一个查看页面,里面有很多片段。当活动被发送到后台并且需要资源时,操作系统将杀死应用程序或至少一些片段。当我返回活动时,它崩溃了,因为活动试图附加它在清理之前持有的所有片段的新实例,现在一些字段为空。这当然可以通过使用 Bundles 正确实现状态保存和恢复来解决,但我不想这样做。 相反,我想防止恢复片段。有没有办法告诉操作系统,一旦它发送了 GC 并销毁了碎片,它就不应该费心重新创建它们?清理完成后,我希望在返回时简单地重新创建活动,就好像用户通过点击图标启动它一样。有机会吗?
这里建议的解决方案https://stackoverflow.com/a/15683289/552735 不起作用。它会导致异常 java.lang.IllegalStateException:键 f2 的片段不再存在:索引 3
【问题讨论】:
-
您是否尝试在持有您的碎片的活动的
onStop()方法中添加finish()?它不会保存任何状态。 -
每次发送到后台时都会杀死活动,即使我按下主页按钮也是如此。这不是我想要的——我只希望操作系统停止重新创建在销毁之前存在的所有片段。据我所知,ViewPager 有它自己的状态恢复机制,这就是导致这些问题的原因。
标签: android