【Android】底层逻辑深入了解(学习笔记)(未完)

step by step.

目录

init启动

Zygote进程:

 SystemServer处理过程

Binder:

Launcher启动过程

Android系统启动流程

四大组件

Activity

Service

 BroadcastReceiver广播

ContentProvider内容提供者(进程内和进程间的数据共享)

 Context上下文

 AMS(ActivityManagerService)


(在图书馆看了《Android进阶解密》,结合自己做的Android app记一下学习笔记——

init启动

1.创建、挂载所需的文件目录;

2. 初始化&启动属性服务;

3. 解析init.rc配置文件&启动Zygote进程

Zygote进程:

Android世界之盘古女娲——Zygote_好重好重的博客-CSDN博客Zygote在Android系统中,zygote是一个native进程,是Android系统上所有应用进程的父进程,我们系统上app的进程都是由这个zygote分裂出来的。zygote则是由Linux系统用户空间的第一个进程——init进程,通过fork的方式创建的。zygote进程做了两个重要的事情:1. 不断接收其它进程的信号,随时创建子进程(即app进程)2. 创建了嫡长子 ..._zygotehttps://blog.csdn.net/chz429/article/details/87514718?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169043961716800182188048%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169043961716800182188048&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-87514718-null-null.142^v91^insertT0,239^v3^insert_chatgpt&utm_term=zygote&spm=1018.2226.3001.4187


 

 SystemServer处理过程

1.启动Binder线程池

2.进入SystemServer的main方法(创建、启动系统服务等……)

Binder:

通过Binder发起ServiceManager进程,提供跨进程通信(比如Client和Server)

Android跨进程通信:图文详解 Binder机制 原理_android binder机制_Carson带你学Android的博客-CSDN博客前言如果你接触过 跨进程通信 (IPC),那么你对Binder一定不陌生虽然 网上有很多介绍 Binder的文章,可是存在一些问题:浅显的讨论Binder机制 或 一味讲解 Binder源码、逻辑不清楚,最终导致的是读者们还是无法形成一个完整的Binder概念本文采用 清晰的图文讲解方式,按照 大角度 -> 小角度 去分析Binder,即: 先从 机制、模型的角度 去分析 整个B..._android binder机制https://blog.csdn.net/carson_ho/article/details/73560642?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169044025916782427498832%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169044025916782427498832&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-73560642-null-null.142^v91^insertT0,239^v3^insert_chatgpt&utm_term=Binder&spm=1018.2226.3001.4187


 

Launcher启动过程

(Launcher:Android系统的桌面,返回已经安装的应用程序信息,并封装成一个快捷图标列表显示在系统屏幕)

作为Android启动器,用于启动应用程序

作为Android桌面,显示和管理app图标或其它组件


 

Android系统启动流程

1.启动电源及系统启动;

2.引导程序BootLoader

3.LInux内核启动(设置缓存、加载驱动……)

4.init进程启动

5.Zygote进程启动(创建Java虚拟机,启动Socket……)

6.SystemServer进程启动

7.Launcher启动


 

四大组件

Activity

1.根Activity

2.普通Activity

Service

 BroadcastReceiver广播

动态/静态注册自己感兴趣的广播

ContentProvider内容提供者(进程内和进程间的数据共享)


 

 Context上下文

Context上下文——应用程序访问系统资源的接口

(比如:ApplicationContext……

Android全面解析之Context机制_android 广播context_weixin_43766753的博客-CSDN博客前言很高兴遇见你~ 欢迎阅读我的文章。在文章Android全面解析之由浅及深Handler消息机制中讨论到,Handler可以:避免我们自己去手动写 死循环和输入阻塞 来不断获取用户的输入以及避免线程直接结束,而是采用事务驱动型设计,使用Handler消息机制,让AMS可以控制整个程序的运行逻辑。这是关于android程序在设计上更加重要的一部分,不太了解的读者可以前往阅读了解一下。而当我们知道android程序的程序是通过main方法跑起来的,然后通过handler机制来控制程序的运行,那么四_android 广播contexthttps://blog.csdn.net/weixin_43766753/article/details/109017196?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169044154816800184148601%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169044154816800184148601&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-109017196-null-null.142^v91^insertT0,239^v3^insert_chatgpt&utm_term=android%20context&spm=1018.2226.3001.4187

Context经常用:比如要连接数据库时(自己的程序截图——


 

 AMS(ActivityManagerService)

Android系统重要组件AMS_android ams 的作用_Just_Paranoid的博客-CSDN博客Android AMS指的是Android系统中的Activity Manager Service,它是Android系统中一个重要的管理组件,负责管理应用程序的进程、Activity生命周期、任务管理、权限管理等。_android ams 的作用https://blog.csdn.net/weixin_44008788/article/details/130091555?ops_request_misc=&request_id=&biz_id=102&utm_term=android%20ams&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-130091555.142^v91^insertT0,239^v3^insert_chatgpt&spm=1018.2226.3001.4187

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/11468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue的组件化编程的详细讲解加代码演示

😀前言 本片文章是vue系列第5篇整理了vue的组件化编程的详细讲解加代码演示 🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力&am…

linux安装nginx遇到的报错

1、Linux如何修改只读文件(以设置自动连网为例) vim /etc/sysconfig/network-scripts/ifcfg-ens33 然后提示 E45:已设定选项“readonly”(请加!强制执行) 如果需要强制修改,可以使用&#xff0…

activemq消息中间件

ActiveMQ消息中间件详解 下载地址:https://activemq.apache.org/activemq-5015009-release 1、MQ的产品种类 1.1、消息中间件的特性/共同特性/共同维度 Kafka(大数据专用、由java/scala编写) API发送和接收MQ的高可用性MQ的集群和容错配置…

【vue3】获取字典数据,封装为公共方法

前言: 后台项目中基本上都有字典管理页面,Vue封装字典数据的主要目的是为了方便数据的管理和使用 不管在哪个页面使用下拉框,el-select的options数据源需要通过调用接口获取到,不同的数据源调用不同的接口,引入和使用都是不小的工作量,如果使用字典数据管理,不管同个页…

【Spring Cloud Gateway 新一代网关】—— 每天一点小知识

💧 S p r i n g C l o u d G a t e w a y 新一代网关 \color{#FF1493}{Spring Cloud Gateway 新一代网关} SpringCloudGateway新一代网关💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客&a…

linux NDK交叉编译rtmp 与 ffmpeg+rtmp交叉编译(v7a,v8a) 完成流程

最近在学RTMP,记录一下完成的编译流程 我是mac 电脑,但是mac上编译一直通过不了,后来才换到服务器上编译, 其实mac也能编译,只是最开始踩到坑里面了… 这里记录一下linux编译完整流程 环境: NDK: android-ndk-r17cFfmpeg: ffmpeg4.2.2 (高版本也可以编译)system: mac 1. …

【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 )

文章目录 一、Socket 套接字简介1、Socket 套接字概念2、Socket 套接字类型3、Socket 套接字使用步骤4、Socket 套接字服务端与客户端 二、Socket 服务端与客户端开发1、服务端2、客户端3、执行结果 一、Socket 套接字简介 1、Socket 套接字概念 Socket 套接字 是一种 进程之间…

什么是 web3?

在百度搜索引擎输入 “Web3”、“大厂”。跳出来基本都是这样的标题. 以及如今的互联网行业 “哀鸿遍野”,不仅内卷,还裁员。然后掀起一阵风,猛吹 Web3 的好,数据回归用户……最后再 “威逼利诱” 一下,Web3 就是 20 年…

剑指 Offer 37. 序列化二叉树 / LeetCode297. 二叉树的序列化与反序列化(二叉树遍历(深度优先搜索))

题目: 链接:剑指 Offer 37. 序列化二叉树;LeetCode 297. 二叉树的序列化与反序列化 难度:困难 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中&#xff0…

LViT:语言与视觉Transformer在医学图像分割

论文链接:https://arxiv.org/abs/2206.14718 代码链接:GitHub - HUANGLIZI/LViT: This repo is the official implementation of "LViT: Language meets Vision Transformer in Medical Image Segmentation" (IEEE Transactions on Medical I…

MIPI D-PHY 2.1协议(学习笔记)

1~3 简介/术语/参考文档 这三章属于介绍性内容,包括缩略语等名词术语解释内容,不再赘述。 直接进入以下正文部分 4 D-PHY概述 D-PHY描述了一种Source同步、高速、低功耗、低成本的PHY,特别适用于移动应用。这个D-PHY规范主要是为了将相机…

Vue 中通用的 css 列表入场动画效果

css 代码 .gradientAnimation {animation-name: gradient;animation-duration: 0.85s;animation-fill-mode: forwards;opacity: 0; }/* 不带前缀的放到最后 */ keyframes gradient {0% {opacity: 0;transform: translate(-100px, 0px);}100% {opacity: 1;transform: translate…

Linux_CentOS_7.9部署Docker以及镜像加速配置等实操验证全过程手册

前言:实操之前大家应该熟悉一个新的名词DevOps 俗称开发即运维、新一代开发工程师(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障&…

合并 K 个升序链表——力扣23

题目描述 法一 顺序合并 class Solution { public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2){ListNode* dummy new ListNode(-1); //创建一个新的头节点 ListNode *curdummy, *aPtr l1, *bPtr l2;while(aPtr && bPtr){if(aPtr->val < bPtr->…

版本适配好帮手 Android SDK Upgrade Assistant / Android Studio Giraffe新功能

首先是新版本一顿下载↓&#xff1a; Download Android Studio & App Tools - Android Developers 在Tools中找到Android SDK Upgrade Assistant 可以在此直接查看SDK升级相关信息&#xff0c;不用跑到WEB端去查看了。 例如看一下之前经常要对老项目维护的android 12蓝牙…

gitee中fork了其他仓库,如何在本地进行同步

GitHub 操作&#xff1a;同步 Fork 来的仓库&#xff08;上游仓库&#xff09;_sigmarising的博客-CSDN博客 1. 设置upstream 2. git pull --rebase 3. 然后再执行pull、push操作

神经数据库:用于使用 ChatGPT 构建专用 AI 代理的下一代上下文检索系统 — (第 2/3 部分)

书接上回理解构建LLM驱动的聊天机器人时的向量数据库检索的局限性 - &#xff08;第1/3部分&#xff09;_阿尔法旺旺的博客-CSDN博客 其中我们强调了&#xff08;1&#xff09;嵌入生成&#xff0c;然后&#xff08;2&#xff09;使用近似近邻&#xff08;ANN&#xff09;搜索…

Intellij IDEA有什么奇技淫巧?

IDEA全称 IntelliJIDEA&#xff0c;是java语言开发的集成环境&#xff0c;IntelliJ在业界被公认为最好的java开发工具之一&#xff0c;尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、创新的GUI设计等方面的功能可以说是超常的。 idea下载…

index页面通过<script>引入根目录下的js文件后,vite打包项目后,项目中无js文件解决方法

解决方法&#xff1a; 根据打包报错提示&#xff0c;如图&#xff1a;即在<script>标签中加入&#xff1a;type&#xff0c;如图&#xff1a; 再打包 js文件就会被打包进去&#xff01;

水文监测软件 HYPACK 2023.2 Crack

HYPACK是由美国coastal海洋图像公司出品的一款世界知名的水文综合测量软件。它能够为勘测员提供了设计勘测、收集数据、处理数据、减少数据和生成最终产品所需的所有工具。从大地测量转换、测量设计、数据采集、数据后处理直到最终测量成图都实现了快速可靠&#xff0c;强大的绘…