Activity
简介
Activity是Android四大组件之一,是与用户交互的入口点,它表示拥有界面的单个屏幕。Activity之间通过Intent进行通信。
概念
移动应用中,用户与应用的互动并不总是在同一位置开始,而是经常以不确定的方式开始。例如,如果您从主屏幕打开邮箱,可能进入邮件列表,如果您从网页跳转到邮箱,可能进入邮件编写页面。
当一个应用调用另一个应用时,调用方应用会调用另一个应用中的 Activity,而不是整个应用。通过这种方式,Activity 充当了应用与用户互动的入口点。
Activity 提供窗口供应用在其中绘制界面,可以简单理解为一个Activity代表一个屏幕。此窗口通常会填满屏幕,但也可能比屏幕小,并浮动在其他窗口上面。
大多数应用包含多个屏幕,意味着包含多个 Activity。通常,应用中的一个 Activity 会被指定为主 Activity,这是用户启动应用时出现的第一个屏幕。然后,每个 Activity 可以启动另一个 Activity(通常使用intent启动),以执行不同的操作。
虽然应用中的各个 Activity 协同工作形成统一的用户体验,但 Activity之间只存在松散的关联,应用内不同 Activity 之间的依赖关系通常很小。事实上,Activity经常会启动属于其他应用的Activity。
基础配置
要使应用能够使用 Activity,您必须在清单中声明 Activity 及其特定属性。
打开清单文件,并添加 <activity> 元素作为 <application> 元素的子元素。
<manifest ... >
<application ... >
<activity android:name=".ExampleActivity" />
...
</application ... >
...
</manifest >
在AndroidStudio中新建文件,类型选择Activity,会自动在清单文件中声明。
此元素唯一的必要属性是android:name
,该属性用于指定 Activity 的类名称。也可以添加用于定义标签、图标或界面主题等 Activity 特征的属性。发布应用后,就不应再更改 Activity 名称,否则可能会破坏某些功能,例如应用快捷方式。
基础知识
一个 Activity 在其生命周期中会经历多种状态。可以使用一系列回调来处理状态之间的转换。
onCreate()
必须实现此回调,它会在系统创建您的 Activity 时触发。在此函数中应该初始化Activity 的基本组件:例如,您的应用应该在此处创建视图并将数据绑定到列表,而且必须在此处调用 setContentView()
来定义 Activity 界面的布局。
onStart()
onCreate() 退出后,Activity 将进入“已启动”状态,并对用户可见。此回调包含 Activity 进入前台与用户进行互动之前的最后准备工作。
onResume()
系统会在 Activity 开始与用户互动之前调用此回调。此时,该 Activity 位于 Activity 堆栈的顶部,并会捕获所有用户输入。应用的大部分核心功能都是在 onResume()
方法中实现的。
onResume()
回调后面总是跟着 onPause()
回调。
onPause()
当 Activity 失去焦点并进入“已暂停”状态时,系统就会调用 onPause()
。例如,当用户点按“返回”或“最近使用的应用”按钮时,就会出现此状态。
如果用户希望界面继续更新,则处于“已暂停”状态的 Activity 也可以继续更新界面。例如,显示导航地图屏幕或播放媒体播放器的 Activity 就属于此类 Activity。即使此类 Activity 失去了焦点,用户仍希望其界面继续更新。
onStop()
当 Activity 对用户不再可见时,系统会调用 onStop()
。出现这种情况的原因可能是 Activity 被销毁,新的 Activity 启动,或者现有的 Activity 正在进入“已恢复”状态并覆盖了已停止的 Activity。在所有这些情况下,停止的 Activity 都将完全不再可见。
系统调用的下一个回调将是 onRestart()
(如果 Activity 重新与用户互动)或者 onDestroy()
(如果 Activity 彻底终止)。
onRestart()
当处于“已停止”状态的 Activity 即将重启时,系统就会调用此回调。onRestart() 会从 Activity 停止时的状态恢复 Activity。
此回调后面总是跟着 onStart()
。
onDestroy()
系统会在销毁 Activity 之前调用此回调。
此回调是 Activity 接收的最后一个回调。通常是为了确保在销毁 Activity 或包含该 Activity 的进程时释放该 Activity 的所有资源。
参考网站
安卓开发者网站 https://developer.android.google.cn/