activity的生命周期学习

正在使用一个activity,突然来了一个电话
这时你的应用要具备处理这些突发事件的能力
运行状态。activity处于屏幕最前面的时候。响应用户的处理事件
停止状态。完全覆盖
暂停状态。activity上面有另外一个activity。而仍然可见。
回收activity。是系统根据内存状态来进行的。

当Activity从一种状态到另一种状态,会调用下面的保护方法来通知这种变化
oncreate
onstart
onrestart
onresume
onpause
onstop
ondestroy

只要系统需要内存,就会把停止和暂停的activity干掉
系统的主题框 <activity android:theme="@android:style/Theme.Dialog"

完整生命周期循环。从创建到销毁
可视生命周期循环。当onstart到onstop
前台生命周期循环。onresume到onpause

处理突发事件,用到的方法
onSaveInstanceState()
onRestoreInstanceState()

当应用遇到意外情况。如内存不足或者
用户直接按home。由系统销毁一个activity
onSaveInstanceState就会被调用
activity由运行状态进入暂停状态或停止状态也会调用该方法
但当用户主动销毁一个activity时。。按返回键
onSaveInstanceState就不会被调用。因为在这种情况下
用户的行为决定了不需要保存activity的状态
onSaveInstaanceState适合用于保存一些临时性的状态
而onPause适合于数据的持久化保存

当屏幕的方向发生改变,activity会被销毁并重新创建
如果想在activity被销毁前缓存一些数据。并在activity
被重新创建后恢复缓存的数据,可以重写activity的onsaveinstanceState和
onRestoreInstanceState方法
public class PreferencesActivity extends Activity{
	private string name;
	protected void onRestoreInstanceState(Bundle savedInstanceState){
		name=savedInstanceState.getString("name");//被重新创建后恢复缓存数据
		super.onRestoreInstanceState(savedInstanceState);
	}
	protected void onSaveInstanceState(Bundle outState){
		outState.putString("name","liming");被销毁前缓存一些数据
		super.onSaveInstanceState(outState);
	}
}

横竖屏幕切换
当屏幕方向或键盘显示隐藏,变化时都会销毁当前activity
创建新的activity,如果不希望重新创建activity实例时
可以配置
<activity android:configChanges="keyboardHidden|orientation"/>

在android中,应用的响应性被活动管理器
Activity Manager和窗口管理器Window Manger两个
系统服务所监视
当用户触发事件。但应用五秒内未响应。则会弹出
ANR application no response对话框
 

猜你喜欢

转载自yaohuiye.iteye.com/blog/1683700