Activity是什么?
通俗点说Activity就是能与用户进行交互的界面,如点击、长按、上拉下滑等等。
Activity的4中状态
- running:运行状态,位于前台可与用户进行交互
- paused:暂停状态,可见但不可与用户进行交互
- stopped:停止状态,位于后台不可见
- killed:被杀死状态,被回收
Activity的生命周期
下面是官网的一张图,有个大致的映像即可。
060009291302389.png
主要说下面的几种情况:
- Activity启动
onCreate()->onStart()->onResume()
- 用户按下HOME键
onPause()->onStop()
- 重新打开之前的Activity
onRestart()->onStart()->onResume()
- 正常退出当前Activity
onPause()->onStop()->onDestroy()
Android进程的优先级
我们都知道在内存不足的时候系统会回收优先级低的进程。
前台->可见->服务->后台->空
- 前台:用户看得见并且可以交互
- 可见:用户看到见但不可交互,举个简单的例子就是有个透明的Activity覆盖住了之前的Activity,那么之前的Activity就从前台转到了后台
- 服务:就是在后台一直运行的services
- 后台:与服务不同的是后台是由前台转换过来的,按下home键后之前的Activity就处于后台了
- 空:优先级最低,不属于以上的类型,Android系统可随时杀掉该进程
Android的任务栈
在Android中,Activity是存在于任务栈中,任务栈是一种栈结构,存放Activity的集合,如下图所示,是一种先进后出的结构。
614265-20150829140521390-780924078.jpg
Activity在一定情况下可以单独占用一个任务栈,这里涉及到Activity的启动模式(后面再说)。
Activity的启动模式
Activity的启动模式一共分为4种
- standard:默认的是这个模式,每次创建一个Activity时都会新建一个实例,它不管任务栈中是否存在该实例,这样模式会消耗比较大的内存。
- singleTop:又叫做栈顶复用模式,每次创建一个新的Activity时都会在任务栈顶查看是否有该实例,如果有则复用,没有才创建。
- singleTask:该模式会一直复用任务栈中Activity实例,需要注意的是它会清除它之上的Activity从而是自己到达栈顶,用的比较多的地方就是一个应用的主页。
- singleInstance:该模式下创建Activity时会为这个Activity单独创建一个任务栈,用的比较多的一个场景是消息推送,用户点击通知栏上的消息进入到一个Activity中,当用户按下返回键时会之间退出这个应用,而不是进入到这个应用中,因为这个任务栈中只有这个Activity。