Android中如何区分界面组件创建和销毁的类型
2015-02-15 15:24
369 查看
本文主要描述:
1.分辨系统杀掉退出还是用户主动退出
2.分辨全新的创建还是系统恢复性的创建
1.分辨系统杀掉退出还是用户主动退出
当一个组件失去焦点后,系统有可能为了释放资源而杀掉这个组件,这个时候系统会调用到onSaveInstanceState方法用来通知保存一些状态数据。而如果用户是按下了back键或者在代码的某个地方 执行了context.finish()而导致组件退出,则不会走到onSaveInstanceState方法。
所以可以根据是否走到了onSaveInstanceState方法来判断组件是被系统杀掉退出还是用户主动退出
2.分辨全新的创建还是系统恢复性的创建
同理,如果是系统杀掉了组件,那么如果将来需要恢复这个组件(即组件重建,比如旋转屏幕),那么在onCreate中传来savedInstanceState这个Bundle数据就不是空的。反之若是新创建的组件,这个Bundle一定是空的。
所以在写一个activity的时候,在onCreate里面要处理这个组件是新创建的还是系统恢复性的创建,这个对后面的后续的逻辑是有区别的。
比如一个邮件的撰写邮件:
1.分辨系统杀掉退出还是用户主动退出
2.分辨全新的创建还是系统恢复性的创建
1.分辨系统杀掉退出还是用户主动退出
当一个组件失去焦点后,系统有可能为了释放资源而杀掉这个组件,这个时候系统会调用到onSaveInstanceState方法用来通知保存一些状态数据。而如果用户是按下了back键或者在代码的某个地方 执行了context.finish()而导致组件退出,则不会走到onSaveInstanceState方法。
所以可以根据是否走到了onSaveInstanceState方法来判断组件是被系统杀掉退出还是用户主动退出
2.分辨全新的创建还是系统恢复性的创建
同理,如果是系统杀掉了组件,那么如果将来需要恢复这个组件(即组件重建,比如旋转屏幕),那么在onCreate中传来savedInstanceState这个Bundle数据就不是空的。反之若是新创建的组件,这个Bundle一定是空的。
所以在写一个activity的时候,在onCreate里面要处理这个组件是新创建的还是系统恢复性的创建,这个对后面的后续的逻辑是有区别的。
比如一个邮件的撰写邮件:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(savedInstanceState != null) { lastState = savedInstanceState.getBoolean("***"); // restore last view }else { String action = getIntent().getAction(); if(Intent.ACTION_SEND.equals(action) || Intent.ACTION_SENDTO.equals(action) || Intent.ACTION_VIEW.equals(action) || Intent.ACTION_SEND_MULTIPLE.equals(action)) { //send email, then parse the sender name or text content from intent. init the email sending view } } }
相关文章推荐
- Android: 如何创建AVD以及选择合适target类型
- android系统如何自适应屏幕大小 分类: Android界面和组件 2014-07-01 20:11 63人阅读 评论(0) 收藏
- 如何在Android中创建一个悬浮的界面
- Android: 如何创建AVD以及选择合适target类型
- android主题Theme.Holo.Light下如何设置程序的标题字体颜色为白色 分类: Android界面和组件 2014-06-21 14:02 327人阅读 评论(0) 收藏
- 转载:Android开发基础:如何创建启动界面Splash Screen
- 如何创建一个android的react-native组件(二)
- android主题Theme.NoTitleBar.Fullscreen下如何设置程序的字体颜色为黑色 分类: Android界面和组件 2014-06-21 14:04 162人阅读 评论(0) 收藏
- Android 如何创建子线程以及区分主线程
- 如何创建一个依赖Android AAR文件的React Native组件
- 如何创建一个依赖Android AAR文件的React Native组件
- Android--(1)Activity组件的作用,如何创建Activity,如何启动Activity,以及Activity之间跳转的示例
- 如何创建一个Android原生的react-native组件(一)
- 如何实现Android界面组件的抖动效果
- Android: 如何创建AVD以及选择合适target类型
- Android 如何查看界面层数和界面所属组件信息
- Android: 如何创建AVD以及选择合适target类型
- android如何使viewpager不销毁已经创建的view
- .NET : 如何动态根据一个业务实体类型创建XSD架构文件
- 在Access中创建表及如何指定字段类型