AI智能
改变未来

Android 四大组件:这是一份全面 & 详细的Activity学习指南


前言

  • Activity

    属于

    Android

    的四大组件之一

  • 本文将全面解析
    Activity

    ,献上1份

    Activity

    的学习攻略,包括其生命周期、启动模式、启动方式等等,希望你们会喜欢。

目录

1. 定义

即 活动,属于 展示型组件

属于

Android

四大组件之一:

Activity

Service

BroadcastReceiver

ContentProvider

2. 作用

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

  1. 一个
    Activity

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

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

    之间通过

    Intent

    进行通信

3. 生命周期

  • 具体如下图

更加详细请看文章:Android基础:3分钟详解Activity生命周期

4. 启动模式

  • Activity

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

  • 4种启动模式的区别

更加详细请看文章:Android基础:最易懂的Activity启动模式详解

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 匹配规则

更加详细请看文章:Android:关于 Intent组件的那些小事(介绍、使用方法等)

6. 启动过程

Activity

的启动过程具体如下:

6.1 示意图

6.2 具体描述

当请求启动

Activity

时:

  1. Launcher

    进程通过

    Binder

    驱动向

    ActivityManagerService

    类发起

    startActivity

    请求;

  2. ActivityManagerService

    类接收到请求后,向

    ActivityStack

    类发送启动

    Activity

    的请求;

  3. ActivityStack

    类记录需启动的

    Activity

    的信息 & 调整

    Activity

    栈 将其置于栈顶、通过

    Binder

    驱动 将

    Activity

    的启动信息传递到

    ApplicationThread

    线程中(即

    Binder

    线程)

  4. ApplicationThread

    线程通过

    Handler

    Activity

    的启动信息发送到主线程

    ActivityThread
  5. 主线程
    ActivityThread

    类接收到该信息 & 请求后,通过

    ClassLoader

    机制加载相应的

    Activity

    类,最终调用

    Activity

    onCreate()

    ,最后 启动完毕

7. 卡顿原因

Activity

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

关于内存泄漏 & 性能优化,请看系列文章:
Android性能优化:这是一份全面&详细的内存优化指南
Android性能优化:手把手带你全面了解 内存泄露 & 解决方案
Android性能优化:那些关于Bitmap图片资源优化的小事
Android性能优化:手把手带你全面了解 绘制优化
Android性能优化:布局优化 详细解析(含、、讲解 )

8. 加速启动方式

加速启动

Activity

的方式归结如下:

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

  • 问题描述

  • 具体说明

10. Activity 与Fragment的交互方式

  • 主要有:接口、Bundle、广播
  • 具体请看文章:Android:手把手教你 实现Activity 与 Fragment 相互通信(含Demo)

至此,关于

Android

四大组件之一的

Activity

讲解完毕。

11. 总结

  • 本文全面讲解了
    Activity

    ,现在大家对

    Activity

    应该十分了解了

  • 下一篇文章我将对讲解
    Android

    的相关知识,感兴趣的同学可以继续关注本人运营的 CSDN博客

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

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Android 四大组件:这是一份全面 & 详细的Activity学习指南