一、Activity的生命周期简述
在讲onStart()和onResume()的区别之前,必须清楚Activity的四种状态:
1.Running状态:一个新的Activity的启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并,可与用户交互的激活装态;
2.Paused状态:当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态,此时它依然与窗口管理器保持连接,系统继续维护其内部状态,他仍然可见,但是它已经失去焦点,故不可与用户交互。
3.Stopped状态:当Activity不可见时,Activity处于Stopped状态。当Activity处于此状态时,一定要保存当前数据和当前的UI状态,否则一旦Activity退出或关闭时,当前的数据和UI状态就丢失了。
4.Killed状态: Activity被杀掉以后或者被启动以前,处于Killed状态。这是Activity已从Activity堆栈中移除,需要重新启动CIA可以显示和使用。
以上四种状态,Running状态和Paused状态是课件的,Stopped状态和Killed状态时不可见的。
二、OnStart()和OnResume()方法的区别
区别:
onStart()通常作用于用户初始化APP,或onStop()方法之后(用户按下home键,activity变为后台)之后用户再切回这个activity就会调用onRestart()然后调用onStart(),在OnStart()方法在被调用的时候,Activity已经可见,但是此时的Activity尚未出现在前台,不能与用户进行交互可理解为Activity已经出现了,但是我们无法与其进行交互;
onResume()是onPaused()(activity被另一个透明或者Dialog样式的activity覆盖了)之后dialog取消,activity回到可交互状态,调用onResume(),简单地讲OnResume()就是使OnStart()方法之后的Activity变为可交互的状态;
总结
onResume的调用途径更多,用处就是获得焦点使得Activity处于可交互状态。
包括Activity创建后和重新启动。我们经常会看到有些窗口被另外一个透明窗口覆盖,虽然能看到但无法对他进行操作,这时的Activity就没有获得用户焦点。
生命周期有两种:
1、开始创建Activity->onCreate()->onStart()->onResume()->获得焦点可交互状态。
2、不可见状态->onRestart()->onStart()->onResume()->获得焦点可交互状态。
onRestart 当处于非栈顶状态的活动需要再次返回栈顶,展现给用户的时候,触发该方法。
也就是说执行了onStop()且没有执行onDestroy()的Activity被重新激活时,就会调用onRestart()方法。
生命周期只有一种:Running状态->onPause()->onStop()->不可见状态->onRestart()->onStart->onResume()->获得焦点可交互状态。