请列举一下android四大组件的名称,Android四大组件:关于Activity的知识都在这里了...

前言

Activity属于 Android的四大组件之一

本文将全面解析 Activity ,献上1份 Activity的学习攻略,包括其生命周期、启动模式、启动方式等等,希望你们会喜欢。

目录

f4405b1d5469cd2f54133edbce09cdab.png

1. 定义

即 活动,属于 展示型组件

属于Android四大组件之一:Activity、Service、BroadcastReceiver、ContentProvider

2. 作用

显示界面 & 与用户进行交互

一个Activity通常是一个界面,是四大组件唯一能被用户感知的

每个活动被实现为一个独立的类, & 从活动基类继承过来

Activity之间通过Intent进行通信

3. 生命周期

具体如下图

dbe4eb799ca874c9997d89d2637e3a03.png

4. 启动模式

Activity的启动模式有4种,具体如下

6917fa096eda0057bbe340b06cd7e152.png

4种启动模式的区别

a3562e3371bd27db91e8db98edf1548d.png

5. 启动方式

启动Activity的方式主要是:显式Intent & 隐式Intent

具体介绍如下:

5.1 显式Intent(3种)

// 1. 使用构造函数 传入 Class对象

Intent intent = new Intent(this, SecondActivity.class);

startActivity(intent);

// 2. 使用 setClassName()传入 包名+类名 / 包Context+类名

Intent intent = new Intent();

// 方式1:包名+类名

// 参数1 = 包名称

// 参数2 = 要启动的类的全限定名称

intent.setClassName("com.hc.hctest", "com.hc.hctest.SecondActivity");

// 方式2:包Context+类名

// 参数1 = 包Context,可直接传入Activity

// 参数2 = 要启动的类的全限定名称

intent.setClassName(this, "com.hc.hctest.SecondActivity");

startActivity(intent);

// 3. 通过ComponentName()传入 包名 & 类全名

Intent intent = new Intent();

// 参数1 = 包名称

// 参数2 = 要启动的类的全限定名称

ComponentName cn = new ComponentName("com.hc.hctest", "com.hc.hctest.SecondActivity");

intent.setComponent(cn);

startActivity(intent);

复制代码

5.2 隐式Intent

// 通过Category、Action设置

Intent intent = new Intent();

intent.addCategory(Intent.CATEGORY_DEFAULT);

intent.addCategory("com.hc.second");

intent.setAction("com.hc.action");

startActivity(intent);

复制代码

5.3 匹配规则

9bf826b7422a1744e0e1d6f592040e2d.png

6. 启动过程

Activity的启动过程具体如下:

6.1 示意图

a468947e21f92d7379ddb0bfa429d389.png

6.2 具体描述

当请求启动Activity时:

Launcher进程通过Binder驱动向ActivityManagerService类发起startActivity请求;

ActivityManagerService类接收到请求后,向ActivityStack类发送启动Activity的请求;

ActivityStack类记录需启动的Activity的信息 & 调整Activity栈 将其置于栈顶、通过 Binder 驱动 将 Activity 的启动信息传递到ApplicationThread线程中(即Binder线程)

ApplicationThread线程通过Handler将Activity的启动信息发送到主线程ActivityThread

主线程ActivityThread类接收到该信息 & 请求后,通过ClassLoader机制加载相应的Activity类,最终调用Activity的onCreate(),最后 启动完毕

7. 卡顿原因

Activity的卡顿原因主要归结如下:

74aa3d10baa3e911b91d5dc4ab16ef7b.png

8. 加速启动方式

加速启动Activity的方式归结如下:

158030e820d49f773c35a30c974a1a40.png

9. 缓存方式(状态保存)

问题描述

531c6409d64f34121f2cbb55e52bb103.png

具体说明

69d25334eaa8931547b9dee62e7f69e3.png

10. Activity 与Fragment的交互方式

至此,关于Android四大组件之一的Activity讲解完毕。

11. 总结

本文全面讲解了 Activity,现在大家对 Activity应该十分了解了

下一篇文章我将对讲解Android 的相关知识,有兴趣可以继续关注Carson_Ho的安卓开发笔记

请帮顶 / 评论点赞!因为你的鼓励是我写作的最大动力!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值