android横竖屏切换与activity的销毁重建
来源:互联网 发布:戴尔显卡切换软件 编辑:程序博客网 时间:2024/06/06 07:02
http://blog.csdn.net/max2005/article/details/18754739
activity在什么情况下被销毁?
用户按回退键
调用finish
放在回退栈中太久
横竖屏切换
前面两种情况下
系统会认为用户不再需要这个activity了,所以在销毁时不会做任何事
没有任何浏览方法能倒回去,只能再次启动该app
在第三、四种情况下
用户可以通过回退键或其他方式浏览回去
系统会用bundle保存activity的布局状态包括view状态
然后销毁activity,并在重建activity时恢复以前的状态,无需编程
但是注意,系统销毁前不一定能保存所有用户希望保存的数据
系统提供onSaveInstanceState()方法给用户保存额外的数据
提供onRestoreInstanceState()方法用于重建时恢复
但是上述方法仅仅保存少量键值对数据,无法保留大量数据
系统提供onRetainNonConfigurationInstance()用于保留大量的数据
提供getLastNonConfigurationInstance()用户恢复数据
注意这个方法不能传递和context有关的东西,比如view、adapter等等,否则会泄露内存
只能保存自定义的MyDataObject
注意这个方法已经 deprecated in API level 13. 官网推荐了下述fragment的方法
activity上面有fragment的情况
官方大力推荐使用fragment来实现模块化,如果activity上面有fragment
那么有一个在销毁重建activity时透传fragment状态的方法 setRetainInstance()
方法解释在 http://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)
简单实践了一下,似乎存在一些问题,可能和activity与fragment的连接和分工有关
似乎从fragment到activity方向的连接或指针正常
但是从activity到fragment的连接或指针却不对了,activity无法更新fragment
在我的项目的实践结果是
fragment上面的数据,比如listview,原本和下面的activity里面的list是对应的,但是透传之后不对应了
网上找到一些相关讨论。stackoverflow上面相关讨论
http://stackoverflow.com/questions/11160412/why-use-fragmentsetretaininstanceboolean
http://stackoverflow.com/questions/11182180/understanding-fragments-setretaininstanceboolean?lq=1
http://stackoverflow.com/questions/5996446/fragments-setretaininstancetrue-and-threaded-libraries
一篇专门的博客 Handling Configuration Changes with Fragments
http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html
防止activity被销毁重建
横竖屏切换时
横竖屏切换时导致activity销毁和重建
这个动作的目的是担心activity的布局及资源不适合横竖屏切换
通过销毁重建给程序一个机会来适配
但实际上,如果布局和资源没有和横竖屏绑定的话
其实没必要做这个销毁,完全可以取消这个相当危险的操作
取消方法是在activity的属性中添加 android:configChanges="orientation|screenSize"
放在回退栈中太久
android:alwaysRetainTaskState="true" ----- 始终维持activity的状态
似乎这个属性可用,但我不很肯定
注意文档说明这个方法只对任务栈中第一个activity有效
- android横竖屏切换与activity的销毁重建
- android横竖屏切换与activity的销毁重建
- android 横竖屏切换导致Activity 销毁重建
- Android横竖屏切换不销毁当前Activity的方法
- Android横竖屏切换小结(重建、非重建Activity)
- Android横竖屏切换时不销毁Activity
- [Android]横竖屏切换的屏蔽、捕获,及防止Activity的销毁
- Android之屏幕方向|显示方式|Activity重建问题|横竖屏切换不同的布局
- 横竖屏切换后不重建Activity
- Android Activity的横竖屏切换与状态保存
- Activity销毁与重建
- android 横竖屏切换的时候不会销毁
- android 横竖屏切换,activity的生命周期
- Android Activity横竖屏切换的生命周期
- Android Activity 横竖屏切换的生命周期
- android manifest中activity android:configChanges 横竖屏切换,禁止重建Activity
- android:configChanges="orientation|keyboardHidden“后横竖屏切换任然会销毁旧的activity然后创建新的
- Android Activity的销毁和重建
- Activity的四种launchMode
- 判断字节序
- android模拟器鼠标滑动 经常出现搜索框 C现象
- iPhone中删除app时icon晃动的动画
- UITableView隐藏多余的分割线
- android横竖屏切换与activity的销毁重建
- 命令行查看android数据库
- HDU4737线段树
- 学习笔记_java web—EL表达式
- .net 获取根目录的方法集合
- 开始学数据结构——(一):选择排序
- ACR10E
- XHTML
- 什么是数字PLL