目录
【演示3】打开app,进入MainActivity2,跳转到DemoActivity
3.修改AndroidManifest中对应Activity的exported属性
一、Activity概念
安卓提供给用户与手机之间可交互的界面组件
移动应用中,用户与应用的互动不总是在同一位置开始,用户转化历程往往会不确定性地开始。
例如:
从主屏幕打开电子邮件应用,可能会看到电子邮件列表。从社交媒体应用中启动电子邮件应用,可能会直接进入电子邮件应用的撰写屏幕。
Activity类就旨在促进这种范式:当应用A调用应用B时,A会调用B中的 activity,而不是整个应用。这样,activity 便会充当应用与用户互动的入口点。
通常情况下,
- 一个Activity实现应用中的一个屏幕;
- 应用中的一个 activity 会被指定为main activity,即用户启动应用时显示的第一个屏幕
- Activity相当于一个舞台,上面有一场又一场的表演,表演由fragment来扮演
- 一个Activity是一个独立的界面(实现应用中的一个屏幕),当我们创建一个界面的时候,它可以被独立启动
二、Activity生命周期
为了在 activity 生命周期的各个阶段之间导航过渡,Activity
类提供了六个核心回调,当 activity 进入新状态时,系统会调用其中每个回调。
序号 | 回调方法 | 活动 | 调用时刻 | 备注 |
---|---|---|---|---|
1 | onCreate() | 创建 | 首次创建,通常做一些初始化工作 (如setContainView加载界面布局资源) | 用户不可见,“被创建”状态 |
2 | onStart() | 开始 | 准备进入前台,即将可见时 | 用户不可见,“已开始”状态 |
3 | onResume() | 启动 | 用户与应用程序交互时 | 可见可操作(有焦点),“已恢复”状态 |
4 | onPause() | 中断 | 当前的活动被暂停 | 可见(弹窗)不可操作(无焦点),“已暂停”状态 |
5 | onStop() | 停止 | 停止工作 | “已停止”状态 (隐藏) |
6 | onDestroy() | 销毁 | 即将结束时 | “已销毁” |
7 | onRestart | 恢复 | 暂停之后 | 重新可见 |
2.1生命周期演示: DemoActivity
对Logcat使用不太了解的请参考Android |(四) Logcat的使用-CSDN博客
【注意】
1.可以通过moveto改变Logcat所在位置,为方便截图,将其放在左上
2.过滤显示条件
【演示1】打开app,退出app
【演示2】打开app,按home键,再打开app
【演示3】打开app,进入MainActivity2,跳转到DemoActivity
A跳转到B时,是:Apause暂停,B创建 B开始 B继续启动 ,Astop停止
2.2面试题——横竖屏切换的生命周期 【待演示……】
正常情况下,会
on pause -> on stop --> on Destory
onCreate-->onStart --> onResume
但这样会造成这种情况:手机看视频,竖屏转横屏后,视频不能继续播放了,
为了解决这个问题--->不让它走这个生命周期
解决方案
在清单文件中配置:
android:configChanges="orientation | keyboardHidden"
这样横竖屏切换时,就不会销毁再重建
三、Activity使用
(一)Activity创建
-
模版创建 | 建新项目时
-
模版创建 | 项目内
-
手动创建:
Activity继承于AppCompatActivity(技术发展->继承于FragmentActivity,增加了一些功能,更加适配),而不是纯粹的Activity
(1)创建一个普通类
(2)普通类变为Activity
//1.继承AppCompatActivity
public class SecondActivity extends AppCompatActivity {
//重写有一个参数的onCreate()
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
(3)手动创建布局文件
(4)加载布局:在onCreate() 中调用setContentView()
//在Activity中显示xml布局资源文件
setContentView(R.layout.activity_second);
(二)Manifest配置
所有的Activity必须在Manifest文件(目的:自己清楚自己有哪些界面)中注册
主要是针对整个项目四大组件、APP图标(就是应用商店能看到的APP封面图)等的配置
注意:模版创建的Activity,会自动配置,手动创建的需要自行配置
固定方向(默认竖屏
android:screenOrientation="landscape" //固定横屏
android:screenOrientation="portrait" //固定竖屏