android--activity总结

任务中的所有activity 是作为一个整体进行移动的。整个的任务(即activity 堆栈)可以移到前台,或退
至后台。举个例子说,比如当前任务在堆栈中存有四个activity──三个在当前activity 之下。当用户按下
HOME 键的时候,回到了应用程序加载器,然后选择了一个新的应用程序(也就是一个新任务)。则当前
任务遁入后台,而新任务的根activity 显示出来。然后,过了一小会儿,用户再次回到了应用程序加载器
而又选择了前一个应用程序(上一个任务)。于是那个任务,带着它堆栈中所有的四个activity,再一次
的到了前台。当用户按下BACK 键的时候,屏幕不会显示出用户刚才离开的activity(上一个任务的根
activity)。取而代之,当前任务的堆栈中最上面的activity 被弹出,而同一任务中的上一个activity 显
示了出来。

保存activity状态
当系统而不是用户自己出于回收内存的考虑,关闭了一个activity 之后。用户会期望当他再次回到那个
activity 的时候,它仍保持着上次离开时的样子。
为了获取activity 被杀死前的状态,你应该为activity 实现onSaveInstanceState() 方法。Android
在activity 有可能被销毁之前(即onPause() 调用之前)会调用此方法。它会将一个以名称-值对方式记
录了activity 动态状态的Bundle 对象传递给该方法。当activity 再次启动时,这个Bundle 会传递给
onCreate()方法和随着onStart()方法调用的onRestoreInstanceState(),所以它们两个都可以恢复捕获的
状态。
与onPause()或先前讨论的其它方法不同,onSaveInstanceState() 和onRestoreInstanceState() 并
不是生命周期方法。它们并不是总会被调用。比如说,Android 会在activity 易于被系统销毁之前调用
onSaveInstanceState(),但用户动作(比如按下了BACK 键)造成的销毁则不调用。在这种情况下,用
户没打算再次回到这个activity,所以没有保存状态的必要。
因为onSaveInstanceState()不是总被调用,所以你应该只用它来为activity 保存一些临时的状态,而不
能用来保存持久性数据。而是应该用onPause()来达到这个目的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值