Activity组件
Acitivty是一种可以包含用户界面的组件,表示一个屏幕。屏幕间切换需要启动一个新的Activity。
创建
-
定义一个Java类,继承
Activity或AppCompatActivity(后者是前者的子类)重写
onCreate()方法,必须包含以下语句: -
在AndroidManifest.xml文件中注册
在该文件的
application节点中添加<activity android:name=".MyActivity" .../>节点。其中,
label表示当前页面顶部左上角的标签,如果不设置则默认使用父级application中的label。此外,还可以使用icon属性为当前页面设置指定的图标。包含
intent-filter标签的activity为默认主屏幕,允许且仅允许一个activity标签包含intent-filter子标签。
生命周期
分为完整生存期、可见生存期和前台生存期。
Activity栈:当前运行的activity的集合。Android是使用Task(任务)来管理Activity的,一个Task就是一组存放在栈里Activity的集合,这个栈也称作回退栈。每启动一个新的Activity,就会覆盖在原Activity之上,点击返回键就会销毁最上面的Activity,下面的Activity就会重新显示出来。
Activity状态:
- 运行:栈顶元素,有焦点
- 暂停:非栈顶,部分可见,无焦点
- 停止:非栈顶,不可见
- 销毁:从栈中pop
回调函数:系统自动调用,不可手动调用。
onCreate():创建Activity,在活动第一次被创建的时候调用。onStart():运行,活动由不可见变为可见时调用。onResume():暂停->运行,活动准备好和用户进行交互时调用,此时活动一定位于栈顶。onPause():暂停,系统准备去启动或者恢复另一个活动的时候调用。onStop():停止,活动完全不可见时调用。onDestroy():销毁,活动被销毁前调用。onRestart():停止->运行,活动由停止状态变为运行状态前调用。
跳转
- 启动Activity
- 返回上一个Activity
数据传递
向新Activity中传递单个数据
- 在启动新Activity前封装数据:
- 在新Activity提取数据:
其中,Xxx是被封装的数据的数据类型。
向新Activity中传递打包数据
- 创建Bundle对象并打包数据
- 封装数据
- 在新Activity中提取数据
从新Activity回传数据到旧Activity
- 以子Activity的方式启动新Activity
以便监听数据回传。
请求码是一个整型,用于在存在多个可能打开的子界面中区分具体的子界面。
- 在子Activity Finish前回传数据
Java
结果码用于区分子界面返回状态(通常使用
RESULT_OK或RESULT_CANCELED),以在主Acitivity判断下一步的操作。
- 在主Activity重写onActivityResult()方法
三个主要参数:请求码、结果码、intent对象。在获取数据前,通常需要先判断请求码和结果码是否符合预期。