IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android老友记 -> 正文阅读

[移动开发]Android老友记

Activity是界面还是容器???

?

📌 Activity是什么?

?

</aside>

  • 先回答标题的问题:Activity是一个容器,一个装载视图的容器

Activity是一个可以用来跨进程的组件,管理视图的状态和逻辑(渐渐被小弟Fragment代替)以及他的另一个使命多窗口的跳转和通信

番外:Activity的前世今生

  • 从原始指令到专职渲染再到排版再到管理多窗口跳转和通信

    原始指令:在HAL层通过指令将我们想要的UI渲染在屏幕上

    专职渲染:在运行时层通过C/C++封装Surface Flinger将渲染工作交给他

    专心排版:在Java的框架层封装Window,专门负责排版

    过于繁忙:通过组合模式封装View/ViewGroup减轻Window的负担

    过于优秀:因为View/ViewGroup过于优秀导致Window无事可做

    需求变化:Window正式改名Activity通过模板方法模式简化多窗口的跳转和通信

?

📌 Activity解决了什么问题?

?

</aside>

了解了Activity是什么之后,就应该清楚了,Activity的职责就是管理多窗口跳转和通信,顺带管理View的状态和逻辑,Activity的出现就是简化了我们对多窗口管理的麻烦。这一切归功于Activity的模板方法模式

?

📌 Activity中你必须掌握的点!!!

?

</aside>

  1. 生命周期

  2. 跳转和通信

  3. 视图加载和优化


生命周期为什么会出现???

因为在某些关键的生命节点会干一些重要的事情,就比如人在未成年的时候就会去读书学习在成年之后就会去想着赚钱再之后就是结婚生子,说白了就是每一段的生命周期任务不一样,那么Activity到了一个关键节点,就可以允许我们做一些事情,比如保存数据或者发送网络请求等等。现在你应该明白了为什么会出现生命周期了吧:给我们一个窗口,让我们有机会再关键的节点做该做的事

聊生命周期之前我们先看看进程模式

进程?进程模式?

进程:一个APP运行起来就可以简单的当作一个进程

进程模式:系统的内存是有限的,所以需要区分哪些进程有用,哪些进程没用,在内存吃紧的时候将那些没多大用的进程回收掉,然后把空出来的内存给有用的进程用,所以进程模式的作用就是:区分进程的优先级

进程模式有哪些???

按照优先级的顺序从高到低:前景模式 → 可见模式 → 服务模式 → 背景模式 → 空白模式

进程的优先级取决于进程中组件的活跃状态,只要有一个还处于前台那么他就是前景模式。

生命周期又有那些???

  • 官方图

    ?

  • 简易图

    ?

Activity的宿命是不断的在生命周期之间轮回等待一位有缘人将其销毁

让我们将进程模式和生命周期进行对应

  • 对应图

    ?

我们来给前景模式取个新名字 获焦模式 : 获得整个屏幕的焦点

可见模式 → 失焦模式 : 屏幕上可见但是没有获取焦点


页面跳转和通信

  • 其实这里的跳转和通信不仅仅局限于Activity与Activitiy之间,也可以是Activity和Fragment,Activity和其他四大组件

这里我先来谈谈Activity与Activity之间的跳转和通信

前文我们已经知道 Activity是跨进程的组件,所以不仅要可以跳转到当前App其他页面的能力,还要有跳转到其他app页面的能力。所以就需要一个信使,在不同进程之间传递消息,那么Intent就应运而生 本篇文章是讲解Activity的所以对于Intent的讲解就点到为止

启动模式

  • 说到跳转,就不得不说说启动模式了推荐大家看看这个视频强烈建议多看几遍

看完视频后我们来总结一下:

  1. standard 以及 singleTop 用于app内跳转

  2. singleInstance 用于app间跳转

  3. singleTask 既可用于应用间也可用于应用内

我们来好好谈谈任务和回退栈

这里面牵扯到三个东西 一个是 ActivityRecord(Activity的相关信息) TaskRecord(栈结构) ActivityStack(栈结构)

  • 看图

    ?

    默认的情况:在ActivityStack中只有一个TaskRecord

通信

未完待续…

加载优化

未完待续…

?

📌 怎么用?

?

</aside>

  • 基本用法

    1. 创建一个继承自Activity的类

    2. 在清单文件中声明

    3. 调用setContentView将视图装进Activity里

    • 不过Android Studio 帮我们一步到位了

?

📌 底层原理

?

</aside>

  • 设计思想 : 模板方法模式 + 组合模式

  • 底层源码分析…

如果大家觉得看着有收获,可以关注我的博客 Android老友记持续更新

www.pandaer.space

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:23:00  更:2022-09-04 01:26:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 4:35:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码