An Activity is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map. Each activity is given a window in which to draw its user interface. The window typically fills the screen, but may be smaller than the screen and float on top of other windows.
引用谷歌Dev. Guide原话作为开篇。作为Android众多组建最基础的组件之一,Google把Activity放在第一个是有道理的,正如你看一个人会先看她的脸。
说通俗点,Activity就是你的程序运行起来,显示给用户的界面。可以是全屏的界面,也可以是弹出的窗口。
下面进入重点,也是所有Android开发绕不开的话题:1. Activity生命周期,2. Activity之间的通信,3. Activity布局
1. Activity生命周期
说通俗点,Activity生命周期其实就是一个界面从第一次出现到最后消失的整个过程。
在 android 中,Activity 拥有四种基本状态:
- Active/Runing一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
- Paused 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。
- Stopped 当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stoped状态。
- Killed Activity 被系统杀死回收或者没有被启动时处于 Killed状态。
当一个 Activity 实例被创建、销毁或者启动另外一个 Activity 时,它在这四种状态之间进行转换,这种转换的发生依赖于用户程序的动作。
这里比较难理解的是2和3,通俗点说就是新的Activity完全遮挡住旧的Activity时,旧的Activity就会进入Stopped状态,否则进入Paused状态。看起来很繁琐,但其实这些都是交给系统统一管理的,我们只需要在自己想要的状态做自己想要做的事情就行。 再说通俗点,我们只需要重写对应的方法就可以在对应的状态下做自己要做的事情了。
public class OurActivity extends Activity {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
这里简单举例说明Activity状态转移到running的不同方式。
1. 第一次启动或者之前起的进程已经被系统杀掉了:调用onCreate,再调用onStart,再调用onResume(事实上,我们只需要重写onCreate方法就行)
2. Activity1正在running,崭新的Activity2启动,没有完全遮挡Activity1:
Activity1调用onPause,Activity2调用onCreate,再调用onStart,再调用onResume
如果Activity1重新转到前台:Activity1调用onResume直接到running
3.Activity1正在running,崭新的Activity2启动,完全遮挡Activity1:
Activity1调用onPause,再调用onStop,Activity2调用onCreate,再调用onStart,再调用onResume