关于fragment,activity被回收之后重新恢复

来源:互联网 发布:unity3d 关闭垂直同步 编辑:程序博客网 时间:2024/04/26 00:19

当内存不足的时候位于后台的应用会被系统回收掉,只是保留着任务栈,再次进入的时候会恢复它们。

要注意的地方有:系统只会把ui相关的东西存起来和恢复,其他的一些成员变量都不会管。

会把生命周期和创建一样重新走一遍,这个时候得注意那些不是从onCreat这样的生命周期方法中获得的变量状态了,譬如那些运行的时候从网络获取或者是其他模块传过来的,最好在onSaveInstantstate中存起来。

注意那些子线程,一个在activity或者fragment中长期运行的子线程,会让你的组件得不到释放,并且在重新创建恢复的过程中随着状态的一些更改,譬如旧的fragment从activity中剥离了,持有旧fragment引用的子线程这个时候调用fragment的时候就会有getActivity()返回为空等问题了。


总结:模块间的数据传送,最好使用系统提供的intent这样的载体,有那些无法随着生命周期的创建被恢复的变量时尽量将它通过saveInstanceBundle保存起来,在重新创建的时候可以恢复。或者做好预防机制,比如网络请求的数据没有了,这个时候可以重新加载请求

1 0
原创粉丝点击