activity的生命周期
activity的四种状态
running:正在运行,处于活动状态,用户可以点击屏幕,是将activity
处于栈顶的状态。
paused:暂停,处于失去焦点的时候,处于paused
,可能是被如弹框一样遮盖,被通明的activity
的放置到栈顶,paused
一起状态都存在。
stopped:处于stopped
状态,是当前的activity
被遮盖,是完全遮挡的那种,覆盖屏幕,一起的状态信息还是存在的。
killed:activity
被销毁,回收,一切的状态信息不存在了。
activity的生命周期
activity启动 ->被创建时调用
onCreate()
->被启动,处于用户可见状态,但不能与用户交互onStart()
->可与用户交互了onResume()
点击Home 整个
activity
处于停止状态,可见,不能与用户交互onPause()
->整个activity
被停止,被完全覆盖,onStop()
回到activity 处于由不可见状态到可见的状态
onRestart()->onStart()-onResume()
退出activity
onPause()->onStop()
->当前activity
被销毁,回收,资源释放onDestroy()
Android进程优先级
- 前台进程 -Activte process
- 可见进程-Visible Process
- 服务进程 - Service process
- 后台进程 Background process
- 空进程-Empty process
前台
前台process
是与用户交互的控件的应用程序,处于“活动”状态的Activity
。
可见
可见进程为activity
可见,不属于前台,但不能与用户交互的进程。
服务
已经启动的Service
。
后台
后台的进程中Activity
是不可见的,后台进程中没有启动任何的Service
,即为后台进程。
空
空进程,在资源需要的时候常常被杀掉。
Android的任务栈
App
启动时,系统会创建一个任务栈,栈也被叫做Task
。退出activity
的时候,要清除任务栈,任务栈会保留每个activity
的信息,所以要安全的保存任务栈。
任务栈不是唯一的,也可有一个
activity
可以独享一个任务栈。
正常模式下的栈是后进先出,在AndroidManifest.xml
中启动,通过android:launchMode
进行设置的,有四种模式standard、singleTop、singleTask、singleInstance
。
-
standard:默认,每次启动重新创建。每创建一个
activity
,都会创建一个onCreate()->onStart()->onResume()
。每一次都重新创建会消耗资源。 -
singleTop:栈顶复用模式,栈顶存在则不创建,如果不在栈顶就又要重新创建,检验的是栈顶是否存在,即使在第二个,不是栈顶,
activity
也要被重新创建。 -
singleTask:检测整个任务栈,是否存在
activity
,如果存在就存放在栈顶,1)启动singleTask
的Activity
,会将该Activity
置于栈顶,它上面的所有activity
都会被销毁。2)其他App
以singleTask
模式启动该Activity
时,会创建一个新的任务栈,如果启动模式为singleTask
的Activity
已经在一个任务栈中,那么启动后,后台的这个任务栈将一起切换至前台。 -
singleinstance:该
activity
在整个系统当中有且只有一个实例,在任务栈只有一个activity
,即是singleinstance
。
scheme跳转协议
scheme
跳转协议为一种页面内跳转协议,跳转页面,根据H5
页面跳转,跳转app
等。
结语
-
本文主要讲解 详解Android中的四大组件之一:Activity详解
-
下面我将继续对
Java
、Android
中的其他知识 深入讲解 ,有兴趣可以继续关注 -
小礼物走一走 or 点赞