Android
文章平均质量分 84
dkphenix
如何成为有用的人?工作可以对少数人产生大影响,写博客可以对很多人产生小影响。
展开
-
Android APK的生成流程
第一次接触写Android APP, 不是太清楚Eclipse和AS自动化的的工作后面发生了什么,所以拜读老罗/炸斯特/Android Docs文章后,基于Android M上做个实践总结。 1. 重点是APK的生成流程。 2. Android APP的代码结构是这个流程起始的地方,它决定了APK生成的流程怎么走。 3. 整个流程的结果是一个APK以及对应的odex。Android APP的代原创 2016-09-18 15:47:52 · 543 阅读 · 0 评论 -
Android IPC
Android OS的核心设计思想是component,而支持component的基石则是Inter-component-communication/Inter-process-communication,而不同抽象层次的ICC/IPC都是由Binder来实现的。 从概念上来说,Binder采用C/S通信Model。传送的数据存放于Transaction中,为了能把不同结构的数据放入Transac原创 2016-11-10 15:47:02 · 451 阅读 · 0 评论 -
跟着Innost理解下数据更新、数据同步
本章将先分析ContentService中数据通知机制的实现,然后分析AccountManagerService,最后再介绍ContentService中的数据同步服务。ContentService包含以下两个主要功能: · 它是Android平台中数据更新通知的执行者。数据更新通知与Cursor,query函数实现时提到的ContentObserver有关。 · 它是Android平台中数原创 2016-10-18 15:29:40 · 1220 阅读 · 0 评论 -
Android的Graphic System
Android gfx system的核心是一个生产者消费者模型:生产者消费者分别存在于不同的进程,消费者对应SurfaceFlinger,生产者对应application或者其他service。在生产者消费者之间流动的是用来显示的数据。1. GFX ARCH1.1 总体结构1.2 数据流模型 The diagram above depicts the flow of SurfaceFlinger原创 2016-11-03 11:21:03 · 572 阅读 · 0 评论 -
跟着Innost理解下ContentProvider
重点分析ContentProvider、SQLite、Cursor query、close函数的实现及ContentResolver openAssetFileDescriptor函数。四条分析路线。 · 第一条:以客户端进程通过query来查询相关信息为入口点,分析系统如何创建和启动ContentProvider。此分析路线着重关注客户端进程、ActivityManagerService及Me原创 2016-10-17 16:48:47 · 603 阅读 · 0 评论 -
跟着Innost理解下Android输入系统
Android输入系统的工作原理,包括输入设备的管理、输入事件的加工方式以及派发流程。本章的探讨对象有两个:输入设备、输入事件。 触摸屏与键盘是Android最普遍也是最标准的输入设备。其实Android所支持的输入设备的种类不止这两个,鼠标、游戏手柄均在内建的支持之列。当输入设备可用时,Linux内核会在/dev/input/下创建对应的名为event0~n或其他名称的设备节点。而当输入设备不可原创 2016-10-27 13:47:51 · 468 阅读 · 0 评论 -
跟着Innost理解下WindowsManagerService
WMS为所有窗口分配Surface,掌管Surface的显示顺序(Z-order)以及位置尺寸,控制窗口动画,并且还是输入系统的一重要的中转站。窗口(Window):Android系统中的窗口是屏幕上的一块用于绘制各种UI元素并可以响应应用户输入的一个矩形区域。从原理上来讲,窗口的概念是独自占有一个Surface实例的显示区域。例如Dialog、Activity的界面、壁纸、状态栏以及Toast等都原创 2016-10-27 10:18:04 · 546 阅读 · 0 评论 -
跟着Innost理解下ActivityManagerService
SystemServer中AMS的调用轨迹 以am命令启动一个Activity为例,分析应用进程的创建、Activity的启动,以及它们和AMS之间的交互等知识 分别以Broadcast和Service为例,分析AMS中Broadcast和Service的相关处理流程 以一个Crash的应用进程为出发点,分析AMS如何打理该应用进程的身后事 AMS中应用进程的调度、内存管理 Content原创 2016-10-12 14:18:44 · 542 阅读 · 0 评论 -
跟着Innost理解下Service 的启动以及与AMS的交互
作为四大组件之一Service,其响应Client的请求方式有两种: · Client通过调用startService向Service端发送一个Intent,该Intent携带请求信息。而Service的onStartCommand会接受该Intent,并处理之。该方式是Android平台特有的,借助Intent来传递请求。 · Client调用bindService函数和一个指定的Serv原创 2016-10-17 14:33:25 · 460 阅读 · 0 评论 -
跟着Innost理解下Broadcast和BroadcastReceiver
目前,系统提供两种方式来声明一个广播接收者。 · 在AndroidManifest.xml中声明标签。在应用程序运行时,系统会利用Java反射机制构造一个广播接收者实例。本书将这种广播接收者称为静态注册者或静态接收者。 · 在应用程序运行过程中,可调用Context提供的registerReceiver函数注册一个广播接收者实例。本书将这种广播接收者称为动态注册者或动态接收者。与之相对应,当原创 2016-10-17 11:19:43 · 694 阅读 · 0 评论 -
跟着Innost理解下Activity 的启动以及与AMS的交互
此次旅程: · 行程的起点是am。am是Android中很重要的程序,读者务必要掌握它的用法。我们利用am start命令,发起本次目标Activity的启动请求。 · 接下来进入ActivityManagerService和ActivityStack这两个核心类。对于启动Activity来说,这段行程又可分细分为两个阶段:第一阶段的主要工作就是根据启动模式和启动标志找到或创建Activi原创 2016-10-17 11:06:32 · 1241 阅读 · 0 评论 -
Android ART的运行
Android oat ELF oatdata:存储dex文件 oatexec:存储翻译成本地机器码的指令 details 加载oat 文件的过程Utils classes for oatloading 查找类/方法/native code过程概述 Boot images boot.art文件包含一些特殊的函数,这些函数会在ART虚拟机初始化image空间的时候,将其地址赋给相应的变量原创 2016-09-27 15:24:27 · 578 阅读 · 0 评论 -
Android APK的安装过程
APK的存放目的地预装APK放在/system/app 或者/system/priv-app/; 用户后装APK放在/data/app/; 1. 放在/system/与放在/data/的区别在于: /system/对于非root是read only, 因此,放在/system/app或者/system/priv-app的APK通常没法删除。 2. 放在/system/app/与放在/system原创 2016-09-19 16:50:10 · 726 阅读 · 0 评论 -
Android JVM的运行过程
JVM有三重意思:java virtual machine specification,java virtual machine implementation, java virtual machine runtime instance. 作为Android系统的使用者,我们主要关心runtime instance,不过为了对JVM全貌有个了解,还是需要简要回顾一下JVM specification原创 2016-09-20 15:19:26 · 4261 阅读 · 0 评论 -
跟着Innost理解下与Activity相关的UI控件系统
Android的控件系统封装了: · 测量各个UI元素(一段文字、一个图片)的显示尺寸与位置。 · 对各个UI元素进行布局计算与绘制。 · 当显示内容需要发生变化时进行重绘。出于效率考虑,必须保证重绘区域尽可能地小。 · 分析InputEventReceiver所接收的事件的类型,并确定应该由哪个UI元素响应这个事件。 · 处理来自WMS的很多与窗口状态相关的回调。控件系统可以分原创 2016-10-31 10:30:11 · 1629 阅读 · 0 评论