`
ylzyd12345
  • 浏览: 118200 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
博客专栏
713488f4-d0a9-3f35-997f-199fb0cb3563
玩懂Log,打开Andro...
浏览量:10110
社区版块
存档分类
最新评论

Activity状态保存(sundy深入浅出)之四大组件和Intent

 
阅读更多

 

写在前面的话:本系列主要是学习sundy的Android深入浅出视频中的一些记录,心得。方便自己以后查阅。也供大家查看。欢迎交流,补充。

一般作为面试题(有些有答案,有些没有。问题一般从sundy老师思维导图中摘录,答案并非唯一标准,仅供参考):

 

 

1、为什么需要用到Activity状态保存, 如何用 ?

1)我们希望当前的Activity中的信息不会因为Activity状态的改变,而丢失。比如横竖屏的切换,突然来了个电话。

2)借助Activity Lifecycle + Preference来完成状态保存;

借助onSaveInstanceState & onCreate or onRestoreInstanceState来完成状态保存;

 

2、如何选择到底用SaveInstance还是用Preference?

1)onSaveInstance方法在系统回收Activity之前会调用;Back & Home键不会调用(这里有疑问。按home键应该会调用OnSaveInstance方法的,sundy老师这里讲的可以能有误,补:经过验证,Home键的时候会调用该方法)

网上的答案:

1)当用户按下HOME键时。

 这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性的数据。以下几种情况的分析都遵循该原则

2)长按HOME键,选择运行其他的程序时。

3)按下电源按键(关闭屏幕显示)时。

4)从activity A中启动一个新的activity时。

5)屏幕方向切换时,例如从竖屏切换到横屏时。

默认情况当activity的view有id时,当系统觉得有可能觉得系统会关闭掉此activity时,就会自动保存这些有id的view的状态

注:通过android.os.Process.killProcess杀死时,不会调用任何方法,包括onSaveInstanceState。

2)使用Preference的时候:按了Back键,使用onPause,onResume

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics