在Android中,Activity的启动流程大致如下:
- 调用startActivity(intent)方法或者startActivityForResult(intent, requestCode)方法来请求启动目标Activity。
- 系统会检查目标Activity是否存在,以及当前应用是否具有访问目标Activity的权限。
- 如果目标Activity存在并且有权限访问,系统会为该Activity创建一个新的实例,并将其添加到Activity栈中。
- 系统会调用目标Activity的onCreate()方法来进行初始化,这个方法会在Activity第一次被创建时调用。
- 目标Activity的onCreate()方法完成后,系统会调用onStart()方法,表示Activity正在被启动。
- 然后,系统会调用onResume()方法,表示Activity已经可见并且可以与用户进行交互。
- 如果启动的是另一个Activity并且需要返回结果,那么当前Activity将会进入onPause()状态,等待返回结果。
- 当目标Activity完成其任务后,会调用setResult(resultCode, data)方法将结果返回给调用的Activity。
- 返回结果后,目标Activity会调用finish()方法来销毁自身,并将结果返回给调用的Activity。
- 调用的Activity会重新进入onResume()状态,并通过onActivityResult()方法获取返回的结果。
- 如果启动的是另一个Activity并且不需要返回结果,那么当前Activity将会进入onStop()状态,等待用户再次回到该Activity。
- 当用户回退到该Activity时,系统会调用onRestart()方法重新启动该Activity。
- 然后,系统会调用onStart()方法和onResume()方法,使Activity重新进入可见并且可交互的状态。