深入理解Android
文章平均质量分 95
Ahon
关注 JavaEE,Android,Javascript,HTML5,MySQL,Hadoop,Linux
展开
-
2.7 深入理解ContentProvider
第7章 深入理解ContentProvider7.1 概述本章重点分析ContentProvider、SQLite、Cursor query、close函数的实现及ContentResolver openAssetFileDescriptor函数。为了帮助读者进一步理解本章的知识点,笔者特意挑选了四条分析路线。第一条:以客户端进程通过MediaStore.Images.Media类的静态函数query来查询MediaProvider中Image相关信息为入口点,分析系统如何创建和启动Media.转载 2021-08-14 15:53:50 · 870 阅读 · 0 评论 -
2.6 深入理解ActivityManagerService
# 第6章 深入理解ActivityManagerService6.1 概述相信绝大部分读者对本书提到的ActivityManagerService(以后简称AMS)都有所耳闻。AMS是Android中最核心的服务,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块相类似,因此它在Android中非常重要。AMS是本书碰到的第一块难啃的骨头[①],涉及的知识点较多。为了帮助读者更好地理解AMS,本章将带领读者按五条不同的线来分析它。第一条转载 2021-08-11 21:48:02 · 539 阅读 · 0 评论 -
2.5 深入理解PowerManagerService
第5章 深入理解PowerManagerService5.1 概述PowerManagerService负责Andorid系统中电源管理方面的工作。作为系统核心服务之一,PowerManagerService与其他服务及HAL层等都有交互关系,所以PowerManagerService相对PackageManager来说,其社会关系更复杂,分析难度也会更大一些。先来看直接与PowerManagerService有关的类家族成员,如图5-1所示图5-1 PowerManagerService.转载 2021-08-11 18:52:34 · 1367 阅读 · 0 评论 -
2.4 深入理解PackageManagerService
第4章 深入理解PackageManagerService4.1 概述PackageManagerService是本书分析的第一个核心服务,也是Android系统中最常用的服务之一。它负责系统中Package的管理,应用程序的安装、卸载、信息查询等。图4-1展示了PackageManagerService及客户端的类家族。图4-1 PackageManagerService及客户端类家族由图4-1可知:IPackageManager接口类中定义了服务端和客户端通信的业务函数,还定义了内.转载 2021-08-10 13:01:13 · 1413 阅读 · 0 评论 -
2.3 深入理解SystemServer
# 第3章 深入理解SystemServer3.1 概述SystemServer是什么?它可是Android Java世界的两大支柱之一。另外一个支柱是专门负责孵化Java进程的Zygote。这两大支柱倒了任何一根,都会导致Android Java世界的崩溃(所有由Zygote孵化的Java进程都会被销毁。SystemServer就是由Zygote孵化而来)。崩溃之后,幸好Linux系统中的天字号进程init会重新启动它们以重建Java世界。[①]SystemServer正如其名,和系统服务有着重转载 2021-08-02 09:51:23 · 793 阅读 · 0 评论 -
2.2 深入理解Java Binder和MessageQueue
第9章 深入理解Vold和Rild9.1 概述本章将分析Android系统中两个比较重要的程序,它们分别是:· Vold:Volume Daemon,用于管理和控制Android平台外部存储设备的后台进程,这些管理和控制,包括SD卡的插拔事件检测、SD卡挂载、卸载、格式化等。· Rild:Radio Interface Layer Daemon,用于智能手机的通讯管理和控制的后台进程,所有和手机通讯相关的功能,例如接打电话、收发短信/彩信、GPRS等都需要Rild的参与。Vold和Rild都转载 2021-07-30 21:32:08 · 326 阅读 · 0 评论 -
1.10 深入理解MediaScanner
第10章 深入理解MediaScanner10.1 概述多媒体系统,是Android平台中非常庞大的一个系统。不过由于篇幅所限,本章只介绍多媒体系统中的重要一员MediaScanner。MediaScanner有什么用呢?可能有些读者还不是很清楚。MediaScanner和媒体文件扫描有关,例如,在Music应用程序中见到的歌曲专辑名、歌曲时长等信息,都是通过它扫描对应的歌曲而得到的。另外,通过MediaStore接口查询媒体数据库,从而得到系统中所有媒体文件的相关信息也和MediaScanner有转载 2021-07-22 23:10:02 · 1047 阅读 · 0 评论 -
1.7 深入理解Audio系统
第7章 深入理解Audio系统7.1 概述Audio系统是Android平台的重要组成部分,它主要包括三方面的内容:· AudioRcorder和AudioTrack:这两个类属于Audio系统对外提供的API类,通过它们可以完成Android平台上音频数据的采集和输出任务。· AudioFlinger:它是Audio系统的工作引擎,管理着系统中的输入输出音频流,并承担音频数据的混音,以及读写Audio硬件以实现数据的输入输出等工作。· AudioPolicyService,它是Audi.转载 2021-07-07 23:30:42 · 2000 阅读 · 0 评论 -
1.9 深入理解Vold和Rild
第9章 深入理解Vold和Rild9.1 概述本章将分析Android系统中两个比较重要的程序,它们分别是:Vold:Volume Daemon,用于管理和控制Android平台外部存储设备的后台进程,这些管理和控制,包括SD卡的插拔事件检测、SD卡挂载、卸载、格式化等。Rild:Radio Interface Layer Daemon,用于智能手机的通讯管理和控制的后台进程,所有和手机通讯相关的功能,例如接打电话、收发短信/彩信、GPRS等都需要Rild的参与。Vold和Rild都是Nat转载 2021-07-20 21:29:59 · 1160 阅读 · 0 评论 -
1.8 深入理解Surface系统
第8章 深入理解Surface系统8.1 概述Surface是继Audio系统后要破解第二个复杂的系统。它的难度和复杂度远远超过了Audio。基于这种情况,本章将集中精力打通Surface系统的“任督二脉”,这任督二脉分别是:· 任脉:应用程序和Surface的关系。· 督脉:Surface和SurfaceFlinger之间的关系。当这二脉打通后,我们就可以自行修炼更高层次的功夫了。图8-1显示了这二脉的关系:图8-1 Surface系统的任督二脉其中,左图是任脉,右图是督脉。·转载 2021-07-08 23:44:44 · 1135 阅读 · 0 评论 -
1.6 深入理解binder
第6章 深入理解Binder6.1 概述Binder是Android系统提供的一种IPC(进程间通信)机制。由于Android是基于Linux内核的,因此,除了Binder外,还存在其他的IPC机制,例如管道和socket等。Binder相对于其他IPC机制来说,就更加灵活和方便了。对于初学Android的朋友而言,最难却又最想掌握的恐怕就是Binder机制了,因为Android系统基本上可以看作是一个基于Binder通信的C/S架构。Binder就像网络一样,把系统各个部分连接在了一起,因此它是非常转载 2021-07-06 23:20:59 · 673 阅读 · 3 评论 -
1.5 深入理解常见类
5.1 综述初次接触Android源码,最多见到的一定是sp和wp。如果你只是沉迷于Java世界,那么Looper和Handler也是避不开的。本章的目的,就是把经常碰见的这些内容中的“拦路虎”一网打尽,将它们彻底搞懂。至于弄明白它们有什么好处,就是仁者见仁,智者见智了。我个人觉得,可能Looper和Handler会相对更实用一些。5.2 以“三板斧”揭秘RefBase、sp和wpRefBase是Android中所有对象的始祖,类似MFC中的CObject及Java中的Object对象。在Andr转载 2021-07-04 23:36:18 · 258 阅读 · 0 评论 -
1.4 深入理解Zygote
4.1 概述读者可能已经知道,Android系统存在着两个完全不同的世界:Java世界,Google放出的SDK主要就是针对这个世界的。在这个世界中运行的程序都是基于Dalvik虚拟机的Java程序。Native世界,也就是用Native语言C或C++开发的程序,它们组成了Native世界。初次接触Android的人,可能会有几个疑问:Android是基于Linux内核构建的,它最早存在的肯定是Native世界,那么Java世界是什么时候创建的呢?我们都知道,程序运行时一定要有一个进程,转载 2021-07-04 12:15:30 · 762 阅读 · 0 评论 -
1.3 深入理解init
版权声明:本文为CSDN博主「阿拉神农」的原创文章,遵循CC 4.0 BY-SA版权协议原文链接:https://blog.csdn.net/Innost/article/details/47204675 第3章 深入理解init3.1 概述init是一个进程,确切地说,它是Linux系统中用户空间的第一个进程。由于Android是基于Linux内核的,所以init也是Android系统中用户空间的第一个进程,它的进程号是1。作为天字第一号的进程,init被赋予了很多极其重要的工作职责,本章将.转载 2021-07-03 13:49:23 · 767 阅读 · 0 评论 -
1.2 深入理解JNI
目录2.1 JNI概述二级目录三级目录2.1 JNI概述JNI,是Java Native Interface的缩写,中文为Java本地调用。通俗地说,JNI是一种技术,通过这种技术可以做到以下两点:· Java程序中的函数可以调用Native语言写的函数,Native一般指的是C/C++编写的函数。· Native程序中的函数可以调用Java层的函数,也就是在C/C++程序中可以调用Java的函数。在平台无关的Java中,为什么要创建一个和Native相关的JNI技术呢?这岂不是破坏了Java转载 2021-07-02 00:14:24 · 801 阅读 · 0 评论