Android学习笔记---Activity

通常我们创建一个Android项目的时候,IDE工具通常都会帮我们生成一个默认的MainActivity和它的布局文件.它就是本次的主角–Activity.

Activity是Android的四大基本组件之一,基本的App开发根本离不开它.而要掌握Activity的基本用法,只要熟悉和理解Activity的生命周期就可以了.

Activity的生命周期

先来张熟悉的图片:
Activity的生命周期

其实熟悉了这张图就可以掌握Activity的生命周期了.这张图讲述了Activity在各种情况下的各种状态的转换.Activity在各种状态之间转换都会回调相应的生命周期函数,我们可以复写相应的生命周期函数来完成我们需要完成的工作.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class ExampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 当Activity被第一次创建时会被调用
}
@Override
protected void onStart() {
super.onStart();
// 当Activity变成可见时被调用
}
@Override
protected void onResume() {
super.onResume();
// 当Activity为当前焦点时被调用
}
@Override
protected void onPause() {
super.onPause();
// 当前Activity被抢占焦点,即别的Activity被调到前台
}
@Override
protected void onStop() {
super.onStop();
// 当前Activity,用户不可见
}
@Override
protected void onDestroy() {
super.onDestroy();
// Activity被销毁时调用
}
}

上面的代码是基本的Activity生命周期函数,下面的表是对Activity生命周期函数的总结.

生命周期函数 描述 Killable after 下一个被调用的生命周期函数
onCreate() 当第一次创建时被调用,可以在此方法进行初始化工作(创建View,绑定数据到列表…).此方法的参数是保存着Activity之前状态的Bundle对象 No onStart()
onRestart() Activity已被Stopped,并在重新启动前被调用 No onStart()
onStart() Activity变成用户可见前被调用,当Activity变成前台时后跟onResume(),当Activity变成隐藏是后跟onStop(). No onResume()onStop()
onResume() Activity与用户开始交互前被调用,此时Activity在任务栈的顶端 No onPause()
onPause() 当其他Activity被调到前台时调用,此方法通常用于保存持久性的数据,停止正在运行的动画,以及其他消耗CPU资源的任务.在此函数中应该执行快速的代码,因为在此函数返回前,准备调到前台的下一个Activity是没有响应的.当此Activity从后台返回前台时后跟onResume(),当此Activity变为不可见时后跟onStop() Yes onResume()onStop()
onStop() Activity不再被用户可见时调用.当Activity被销毁时或其他Activity被调到前台时会发生这种情况.当Activity被调回前台与用户交互时后跟onRestart(),Activity被销毁时后跟onDestroy() Yes onRestart()onDestroy()
onDestroy() Activity被销毁前调用,当finish()被调用或者系统因内存不足回收空间时会发生这种情况.可以使用isFinishing()来区分这两种情况. Yes nothing

上表中的Killable after表示在通常情况下,函数返回后系统是否可以杀死Activity所在的进程.