首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
深入Android系列
apigfly
创建于2021-05-10
订阅专栏
全方位的了解 Android
等 98 人订阅
共19篇文章
创建于2021-05-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
深入Android系统(十二)Android图形显示系统-2-SurfaceFlinger与图像输出
最近有些忙,切实体验了一把拖更的羞耻感 ( *︾▽︾) 了解SurfaceFlinger之前我们需要先了解下OpenGL相关的一些知识 OpenGL ES与EGL OpenGL 一般OpenGL被认为
深入Android系统(十二)Android图形显示系统-1-显示原理与Surface
Linux通常使用Framebuffer来用作显示输出(Framebuffer知识详解在这里),Framebuffer就是一块内存区域,它通常是显示驱动的内部缓冲区在内存中的映射。 一旦用户进程把图像数据复制到Framebuffer中,显示驱动会一个像素一个像素地扫描整个Fra…
深入Android系统(十一)AMS-4-广播管理
Broadcast实质上是提供了一种更灵活的使用Intent的方式。 BroadcastReceiver是一种很简单的组件,甚至在ActivityThread中都没有管理它的数据结构。 实现一个广播接收器只需要继承BroadcastReceiver,然后实现它的抽象方法onRe…
深入Android系统(十一)AMS-3-Service和ContentProvider管理
android:process:指定将运行服务的进程的名称。 正常情况下,应用的所有组件都会在为应用创建的默认进程中运行。该名称与应用软件包的名称相同。 如果进程名称以小写字符开头,则服务将在使用该名称的全局进程中运行,前提是它拥有相应的权限。如此一来,不同应用中的组件便可共享…
深入Android系统(十一)AMS-2-Activity生命周期管理
当一个Activity对象的状态发生变化时,会调用上图中定义的抽象接口来通知应用。相关描述如下: mAction是一个字符串,用来指明要执行的操作是什么。 在Intent类中定义了大量的Action,例如ACTION_VIEW、ACTION_SEND等。 mData储存需要传递…
深入Android系统(十一)AMS-1-应用组成与服务的启动
我们不止一次提到Android一直想弱化进程的存在,但是,Android毕竟是建立在Linux系统之上,基础的运行环境还是由进程组成。 我们前面已经介绍,所有的Android的应用程序都是由Zygote进程fork而来,因此,构成应用进程的底层基础,像虚拟机、动态库等都是相同的…
深入Android系统(十)PMS-1-服务初始化
前两篇主要梳理了PMS初始化的流程和初始化的一些细节;最后一篇对应用的安装过程进行了简单梳理。 有没有注意梳理字眼,关于想要深入全面学习PMS的同学只能非常抱歉,本系列文章也仅仅是起到的主要流程的梳理作用。 阅读PMS的方法有点拆俄罗斯套娃的感觉,一层又一层。。。。 Andro…
深入Android系统(十)PMS-2-初始化的一些细节
注册Watchdog监听,此处列出它来主要是为了呼应前面的章节。哈哈哈,重点是第二点 readPermissions()方法先检测指定目录下的xml文件,然后调用readPermissionsFromXml方法来解析文件并将解析结果填充到SystemConfig对应的数据结构中…
深入Android系统(十)PMS-3-应用安装过程
研究应用的安装过程,老样子,我们还是先从使用入手。 在InstallStart中会进行各种Uri的判断,最终会跳转到一个叫做PackageInstallerActivity的界面。 PackageInstallerSession中保存了应用安装的相关数据,例如,安装包的路径、安…
深入Android系统(九)Android系统的核心-SystemServer进程
SystemServer是Android系统的核心之一,大部分Android提供的服务都运行在这个进程里。 为了防止应用进程对系统造成破坏,Android的应用进程没有权限直接访问设备的底层资源,只能通过SystemServer中的服务代理访问。 invokeWith通常为nu…
深入Android系统(八)Android的资源管理
Android的优势之一是它几乎能运行在任何尺寸的设备上,为了能让同一个apk在不同设备上正常运行,Android设计了一套资源管理系统来完成目标。 Android并不是简单地将UI布局和图片进行扩大和缩小来匹配不同配置的设备,而是通过复杂的资源定义方式来保证每种设备都可以有对…
深入Android系统(七)Zygote进程
Zygote是Android中非常重要的一个进程,它和Init进程、SystemServer进程在Android中有着不可替代的地位。 Linux的进程是通过系统调用fork产生的,fork出的子进程除了内核中的一些核心的数据结构和父进程不相同外,其余的内存映像都是和父进程共享…
深入Android系统(六)第一个用户进程-Init进程
Init进程是Linux 内核启动后创建的第一个用户进程,地位非常重要。 Init进程在初始化过程中会启动很多重要的守护进程,因此,了解Init进程的启动过程有助于我们更好的理解Android系统。 在介绍Init进程前,我们先简单介绍下Android的启动过程。从系统角度看,…
深入Android系统(五)Android的同步和消息机制
Android 应用的UI线程,同样采用了消息驱动模式,所有外部来的按键事件、触屏事件、各种系统Intent、广播等都会转化为内部的消息,然后在主线程中分发处理。 现在的操作系统普遍采用消息驱动模式。Windows操作系统就是经典的消息驱动类型。但是,Android的消息处理机…
深入Android系统(四)Android的JNI
Android作为一种嵌入式操作系统,有大量驱动、硬件相关的功能必须在native层实现,另外一些注重性能、功耗的功能使用C/C++来实现也优于用Java来实现。因此,在Android的开发中,无论是应用级的开发,还是系统级的开发都离不开JNI。Android在编译、应用打包和…
深入Android系统(三)Binder-1-导读与简介
对于C++层,要手动实现Bn...、Bp...等类(不知道咋写?Android中那么多支持IPC的服务,借鉴呗。好消息是现在有个HIDL可以简化开发) 想象一个自由的通信状态应该是:给我个binder驱动我可以忍受,干嘛要集成你的服务接口类啊,这么多条条框框的。我想调用哪家的I…
深入Android系统(三)Binder-3-原理
设计复杂也带来了功能的强大,正因为Binder是面向对象的,我们可以创建多个Binder实体对象来服务不同的客户,每个对象有自己的数据。相互之间不会干扰。 Binder在驱动中建立了一张所有进程的引用对象和实体对象的关联表。 为了达到这个目标,Binder定义了自己的引用计数规…
深入Android系统(二)Bionic库
咳咳,有木有发现这么多的了解字眼?因为从这几天本人大脑的表现来看,这种不常用的姿势大脑会习惯性的忘记,只能以了解来安慰自己了。。。。。 Bionic库到底是干啥用的呢?看下简介先。 其实当时已经有成熟开源的GNU Libc库了,不过GNU Libc库遵守的是GPL开源协议。GP…
下一页