每一个运行在Android平台的进程都位于一个栈中。使用一个位于前台的Activity时,托管该Activity的系统进程位于栈的顶端,而上一个进程(托管在前台运行的任何Activity的进程)下移一个位置。
1.理解进程与活动之间的关系
当Android平台认为需要回收资源时,它通过一系列的步骤处理进程(以及它们的托管活动),并根据一组简单的优先级决定杀死哪些进程。
(1)托管前台Activity的进程优先级最高
(2)托管可见但非前台Activity的进程优先级次之
(3)托管后台的Activity的进程优先级再次之
(4)未托管任何Activity的进程优先级最低
可以用adb shell dumpsys activity命令来查看进程的详细信息。
2.活动的生命周期
Android提供的每个生命周期的方法都有不同的用途,这些生命周期的方法分为活动的前台阶段,可见阶段或整个生命周期阶段被调用。
a. 在前台阶段,Activity在屏幕上可见并位于所有其他Activity之上(此时用户可以与该Activity交互以执行任务)。
b. 在可见阶段,Activity仍在屏幕上可见,但是但没有在顶端且不能与用户交互(eg. 此时有一个对话框或浮动框位于Activity之上)。
c. 整个生命阶段引用的则是指应用程序没有在屏幕显示时,应用程序创建之前以及关闭应用程序而应用程序消失之后可能调用的方法。
Android Activity的主要生命周期方法及用途
onCreate():创建Activity时调用。设置在该方法中进行。还以bundle的形式提供对以前存储的任何状态的访问。
onRestart():重新启动Activity时调用。该活动仍在栈中,而不是启动一个新的活动。
onStart():Activity变为在屏幕上可见时调用。
onResume():Activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用)。
onPause():Activity被暂停或收回CPU和其他资源时调用。该方法是用来保存活动状态的地方,以便Activity被重新启动时可以具有与其退出时相同的状态。
onStop():Activity被停止并被转换为不可见阶段及后续的生命周期事件调用。
onDestory():Activity被完全从系统内存中移除时调用。该方法被调用可能是因为有人直接调用onFinish()方法或系统决定停止该Activity。