Activity的使用
发布网友
发布时间:2024-10-05 20:37
我来回答
共1个回答
热心网友
时间:2024-10-23 06:58
活动(Activity)是一个可视化的用户界面,负责创建一个屏幕窗口,放置 UI 组件,供用户交互。当我们打开一个应用,看到的整个界面就是一个Activity,当点击一个超链接,跳转到另一个界面,则又是一个新的Activity。
二、Activity的创建
1、自动创建
(1)右击文件,点击新建==>新建文件
(2)选择Empty Activity==>点击下一步
(3)修改项目名称==>生成默认包名(可以修改)==>默认项目路径(可以修改)==>语言选择Java==>sdk版本可根据需求选择,一般22-30之间,不同版本对应不同Android系统版本==>点击完成
(4)然后生成三个Activity主要的文件,MainActivity,activity_main.xml,AndroidManifest.xml
(5)MainActivity
所有的Activity都要继承AppCompatActivity,所有的活动都需要重写onCreate()方法,并在onCreate()方法中引用布局,才可使用
(6)activity_main.xml
Activity中的布局
(7)AndroidManifest.xml
Activity在AndroidManifest.xml中注册
2、手动创建
(1)右击包名,点击新建==>Activity==>Empty Activity
(2)生成默认的以下内容,可修改,若不勾选Generate a Layout File,则不会创建activity_main.xml文件,点击完成
(3)可以看到在AndroidManifest.xml文件中,自动注册了MainActivity2
三、Activity之间的跳转
从一个Activity 跳转到另一个Activity,在Android中,Activity的跳转是通过Intent来表达的,Intent是组件之间通信的媒介,专门提供组件互相调用的相关信息,Intent的启动方式,大的方向上可以分为两种: 显示启动和隐式启动
1、显示启动
明确指定要跳转的Activity
(1)Activity名称.class
[1] MainActivity代码
[2] MainActivity2代码
[3] 跳转效果
(2)包名.类名
[1] MainActivity代码
[2] MainActivity2代码
[3] 跳转效果
(3)ComponentName
[1] MainActivity代码
[2] MainActivity2代码
[3] 跳转效果
2、隐式启动
隐式启动并不明确指出想要启动哪一个活动,而是指定了一系列的action和category等信息,然后由系统去分析这个Intent,并帮我们找出合适的活动去启动
(1)在AndroidManifest中定义action和category属性
(2)在MainActivity中写入代码
效果
注意:如果想要Activity隐式启动,必须在AndroidManifest.xml中的category属性中,把值设置成android.intent.category.DEFAULT,否则不起作用
四、使用系统Activity
1、拨打电话
(1)在AndroidManifest.xml中的下面加入以下代码
(2)在MainActivity中写入Java代码
(3)效果
2、发送短信
(1)在AndroidManifest.xml中的下面加入以下代码
(2)在MainActivity中写入Java代码
(3)效果
3、打开相机
(1)在MainActivity中写入Java代码
(2)效果
五、生命周期
1、单个Activity生命周期
(1)代码
(2)效果
(3)说明:当开启一个activity时,Android系统首先会回调onCreate()方法,紧接着回调onStart()方法,第三个回调onResume()方法,当这三个方法回调完成之后,此时activity处于用户可见且可操作状态;当用户点击了返回键 ,这个activity就会被关闭,从关闭到被销毁的过程中,Android系统首先会回调onPause()方法,紧接着会调用activity的onStop()方法,此时这个activity就已经被关闭了,而onDestroy()方法在当内存比较紧张的时候才会被执行
2、多个Activity生命周期
(1)MainActivity中代码
(2)MainActivity2中代码
(3)效果
(4)说明:启动MainActivity时,调用MainActivity的onCreate() ==> onStart() ==> onResume(),点击跳转时,MainActivity调用onPause(),同时,MainActivity2调用MainActivity2的onCreate() ==> onStart() ==> onResume(),MainActivity调用onStop();点击返回时,MainActivity2调用onPause(),同时,MainActivity调用MainActivity的onStart() ==> onResume(),MainActivity2调用onStop(),如下表
六、Activity的启动模式
Activity的启动模式是决定生成新的activity实例是否重用已存在的Activity实例,是否和其他Activity实例公用一个task。总共提供了四种启动模式
1、standard
默认启动模式,每次激活activity时,都创建activity实例,并放入任务栈
(1)在AndroidManifest.xml的activity里面加入属性android:launchMode="standard"
(2)在MainActivity中写入Java代码
(3)效果
2、singleTop
如果某个Activity自己激活自己,即任务栈栈顶是该Activity,则不需要创建,其余情况都要创建Activity
(1)在AndroidManifest.xml的activity里面加入属性android:launchMode="singleTop"
(2)在MainActivity中写入Java代码
[1] 第一种情况
效果
[2] 第二种情况
效果
3、singleTask
如果要激活的activity在任务栈中,则不需要创建,只需要把这个Activity放入栈顶,并把该Activity以上的Activity实例都出栈
(1)在AndroidManifest.xml的activity里面加入属性android:launchMode="singleTask"
(2)在MainActivity中写入Java代码
(3)效果
4、singleInstance
只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在
(1)在AndroidManifest.xml的activity里面加入属性android:launchMode="singleInstance"
(2)在MainActivity中写入Java代码
(3)效果