Andorid四大组件(一) | Activity
使用Intent在活动之间穿梭
显式Intent
1 | Itent intent = new (Context context , SecondActivity.class); |
第一个参数为 上下文,第二个参数为 想要启动的Activity 类名
隐式Intent
相比较于显式Intent ,隐式Intent要更加含蓄,不明确启动哪一个活动,而是我们指定一些抽象的 action 和 category ,由用户去选择去调用哪一种Activity,下面这个代码 并没有指明响应哪一个 category 就说明 启动默认的category
1 | Intent intent = new Intent("com.littlestone.activitylifecircle.ACTION_START"); |
如果想要添加 自定义的category
1 | intent.addCategory("com.littlestone.activitylifecircle.MY_CATEGORY"); |
活动的生命周期
包括了:
oncreate()
onstart()
onresume()
onpause()
onstop()
ondestroy()
如图:
需要注意的是,屏幕发生翻转会经过以下生命周期(相当于重走了一遍 生命周期)
一开始进入的时候:
- Oncreate
- onstart
- onresume
屏幕翻转 - onpause
- onstop
- ondestroy
- oncreate
- onstart
- onresume
当由活动A 点击Button 跳转到 活动B时:活动A与活动B经历的生命周期
A–>onCreate:
A–>onStart:
A–>onResume:
点击跳转
A–>onPause:
B–>onCreate:
B–>onStart:
B–>onResume:
A–>onStop:
点击返回
B–>onPause:
A–>onRestart:
A–>onStart:
A–>onResume:
B–>onStop:
B–>onDestroy:
再次点击返回
A–>onPause:
A–>onStop:
A–>Destroy:
禁止屏幕反转
在 AndoridManifest 的 Activity 中 设置 android:screenOrientation=”portrait”
- portrait : 竖直模式
- landscape: 水平模式
活动的启动模式
需要再 AndroidManifest 的activity标签中 声明 launchMode
standard
standard 是活动的默认启动模型,在不显性的指定的情况下,都是这种模式。stacndard 模式中,不管返回栈中是否存在该Activity,都会创建这个Activity 并将其加入到返回栈中
singleTop
singletop是standard的改进版本,会判断栈顶是否为要启动的活动,
- 如果是就不创建新的活动了,直接使用。
- 如果栈顶不是要启动的活动,还需要再创建并加入到返回栈中
singleTask
singleTask是singletop的改进版本,会判断栈内是否存在要启动的活动
如果存在,需要将该活动之间的活动 弹出栈,然后直接使用
如果不存在,再创建,并加入到返回栈中
singleInStance
是Activity 启动模式中最难理解的一种,会将该Activity放置到一个新的返回栈中,以便其他APP调用