Activity生命周期与状态保存
2010-11-25 11:23
155 查看
了解老码农个人隐私,请看这里:http://www.koulianbing.com/?page_id=12
看API的时候,零零散散的记录下来的,看完了总算对Activity的生命周期有了一个全面的了解。相信会对大家有些帮助的。
onCreate->onRestart->onStart->onResume->onPause->onStop->onDestroy
正常启动一个Activity
onCreate->onStart->onResume
弹出系统对话框,程序仍部分可见
onPause
对话框消失时
onResume
调用一个新的Activity,老的Activity不可见时
onPause->onStop
从新的Activity返回时
onRestart->onStart->onResume
正常运行的Activity正常结束时
onPause->onStop->onDestroy
onResume
这不是用来判断Activity是否对用户可见的最好方法。即使这个方法被调用后,也可能有一些系统窗口在我们的Activity前面,如keyguard。onWindowFocusChanged是最准确的。
对于一些没有通过类似managedQuery(android.net.Uri , String[], String, String[], String)这样的方法交给系统管理的Cursor来说,这个时候应该重新获取。因为,按照理论来说,在onStop时,你把它们deactive了。
假设Activity A启动一个Activity B,那么,系统会先调用A的onPause,然后调用B的onCreate、onStart、onResume。然后才会调用A的onStop方法。
因此,在旧的Activity的onPause返回之前,新的Activity不会被创建。因此,这里不要做太费时的事情。
onPause方法中建议做的操作有:停止动画这样大量消耗CPU的动作,使Activity的切换更快速;关掉相机这样独占式访问的资源。
后台Activity因为资源紧张被系统终止时,无论是否可见,都不会调用任何方法,除onSaveInstanceState。
通过android.os.Process.killProcess杀死时,不会调用任何方法,包括onSaveInstanceState。
关于状态保存
onSaveInstanceState
当Activity被切换到后台(部分可见或者不可见,但己不与用户交互)时,就有可能因为资源紧张而被kill,会调用这个方法。
如果这个方法被调用的话,会在onStop之前,但与onPause谁先谁后不确定。
这个方法的默认实现中,保存了当前可见的View树的状态,重写时,如果要保留这个特性的话,调一下super.onSaveInstanceState。
onRestoreInstanceState
这个方法在onStart和onResume之间被调用。
绝大部分情况下,使用onCreate就可以恢复上一次保存的状态。
看API的时候,零零散散的记录下来的,看完了总算对Activity的生命周期有了一个全面的了解。相信会对大家有些帮助的。
onCreate->onRestart->onStart->onResume->onPause->onStop->onDestroy
正常启动一个Activity
onCreate->onStart->onResume
弹出系统对话框,程序仍部分可见
onPause
对话框消失时
onResume
调用一个新的Activity,老的Activity不可见时
onPause->onStop
从新的Activity返回时
onRestart->onStart->onResume
正常运行的Activity正常结束时
onPause->onStop->onDestroy
onResume
这不是用来判断Activity是否对用户可见的最好方法。即使这个方法被调用后,也可能有一些系统窗口在我们的Activity前面,如keyguard。onWindowFocusChanged是最准确的。
对于一些没有通过类似managedQuery(android.net.Uri , String[], String, String[], String)这样的方法交给系统管理的Cursor来说,这个时候应该重新获取。因为,按照理论来说,在onStop时,你把它们deactive了。
假设Activity A启动一个Activity B,那么,系统会先调用A的onPause,然后调用B的onCreate、onStart、onResume。然后才会调用A的onStop方法。
因此,在旧的Activity的onPause返回之前,新的Activity不会被创建。因此,这里不要做太费时的事情。
onPause方法中建议做的操作有:停止动画这样大量消耗CPU的动作,使Activity的切换更快速;关掉相机这样独占式访问的资源。
后台Activity因为资源紧张被系统终止时,无论是否可见,都不会调用任何方法,除onSaveInstanceState。
通过android.os.Process.killProcess杀死时,不会调用任何方法,包括onSaveInstanceState。
关于状态保存
onSaveInstanceState
当Activity被切换到后台(部分可见或者不可见,但己不与用户交互)时,就有可能因为资源紧张而被kill,会调用这个方法。
如果这个方法被调用的话,会在onStop之前,但与onPause谁先谁后不确定。
这个方法的默认实现中,保存了当前可见的View树的状态,重写时,如果要保留这个特性的话,调一下super.onSaveInstanceState。
onRestoreInstanceState
这个方法在onStart和onResume之间被调用。
绝大部分情况下,使用onCreate就可以恢复上一次保存的状态。
相关文章推荐
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- Activity具体解释(生命周期、以各种方式启动Activity、状态保存,全然退出等)
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- Activity具体解释(生命周期、以各种方式启动Activity、状态保存,全然退出等)
- Activity入门详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- Activity的生命周期,状态保存,窗口显示,取得返回结果,安全退出
- Activity生命周期与状态保存
- Activity生命周期中的控件状态保存问题
- Activity具体解释(生命周期、以各种方式启动Activity、状态保存,全然退出等)
- Activity具体解释(生命周期、启动方式、状态保存,全然退出等)
- Activity 生命周期与状态保存
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- android中Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- fragment各种情况下的生命周期、状态保存startActivityForResult是哪个类的方法,在什么情况下使用?