- 博客(16)
- 收藏
- 关注
原创 JAVA/Android Concurrency学习笔记
Thread SafetyWriting thread-safe code is, at its core, about managing access to state, and in particular to shared, mutable state.An object’s state encompasses any data that can affect its externally v
2016-11-30 18:20:02 919
原创 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 457
原创 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 578
原创 跟着Innost理解下与Activity相关的UI控件系统
Android的控件系统封装了: · 测量各个UI元素(一段文字、一个图片)的显示尺寸与位置。 · 对各个UI元素进行布局计算与绘制。 · 当显示内容需要发生变化时进行重绘。出于效率考虑,必须保证重绘区域尽可能地小。 · 分析InputEventReceiver所接收的事件的类型,并确定应该由哪个UI元素响应这个事件。 · 处理来自WMS的很多与窗口状态相关的回调。控件系统可以分
2016-10-31 10:30:11 1630
原创 跟着Innost理解下Android输入系统
Android输入系统的工作原理,包括输入设备的管理、输入事件的加工方式以及派发流程。本章的探讨对象有两个:输入设备、输入事件。 触摸屏与键盘是Android最普遍也是最标准的输入设备。其实Android所支持的输入设备的种类不止这两个,鼠标、游戏手柄均在内建的支持之列。当输入设备可用时,Linux内核会在/dev/input/下创建对应的名为event0~n或其他名称的设备节点。而当输入设备不可
2016-10-27 13:47:51 472
原创 跟着Innost理解下WindowsManagerService
WMS为所有窗口分配Surface,掌管Surface的显示顺序(Z-order)以及位置尺寸,控制窗口动画,并且还是输入系统的一重要的中转站。窗口(Window):Android系统中的窗口是屏幕上的一块用于绘制各种UI元素并可以响应应用户输入的一个矩形区域。从原理上来讲,窗口的概念是独自占有一个Surface实例的显示区域。例如Dialog、Activity的界面、壁纸、状态栏以及Toast等都
2016-10-27 10:18:04 550
原创 跟着Innost理解下数据更新、数据同步
本章将先分析ContentService中数据通知机制的实现,然后分析AccountManagerService,最后再介绍ContentService中的数据同步服务。ContentService包含以下两个主要功能: · 它是Android平台中数据更新通知的执行者。数据更新通知与Cursor,query函数实现时提到的ContentObserver有关。 · 它是Android平台中数
2016-10-18 15:29:40 1223
原创 跟着Innost理解下ContentProvider
重点分析ContentProvider、SQLite、Cursor query、close函数的实现及ContentResolver openAssetFileDescriptor函数。四条分析路线。 · 第一条:以客户端进程通过query来查询相关信息为入口点,分析系统如何创建和启动ContentProvider。此分析路线着重关注客户端进程、ActivityManagerService及Me
2016-10-17 16:48:47 608
原创 跟着Innost理解下Service 的启动以及与AMS的交互
作为四大组件之一Service,其响应Client的请求方式有两种: · Client通过调用startService向Service端发送一个Intent,该Intent携带请求信息。而Service的onStartCommand会接受该Intent,并处理之。该方式是Android平台特有的,借助Intent来传递请求。 · Client调用bindService函数和一个指定的Serv
2016-10-17 14:33:25 466
原创 跟着Innost理解下Broadcast和BroadcastReceiver
目前,系统提供两种方式来声明一个广播接收者。 · 在AndroidManifest.xml中声明标签。在应用程序运行时,系统会利用Java反射机制构造一个广播接收者实例。本书将这种广播接收者称为静态注册者或静态接收者。 · 在应用程序运行过程中,可调用Context提供的registerReceiver函数注册一个广播接收者实例。本书将这种广播接收者称为动态注册者或动态接收者。与之相对应,当
2016-10-17 11:19:43 700
原创 跟着Innost理解下Activity 的启动以及与AMS的交互
此次旅程: · 行程的起点是am。am是Android中很重要的程序,读者务必要掌握它的用法。我们利用am start命令,发起本次目标Activity的启动请求。 · 接下来进入ActivityManagerService和ActivityStack这两个核心类。对于启动Activity来说,这段行程又可分细分为两个阶段:第一阶段的主要工作就是根据启动模式和启动标志找到或创建Activi
2016-10-17 11:06:32 1249
原创 跟着Innost理解下ActivityManagerService
SystemServer中AMS的调用轨迹 以am命令启动一个Activity为例,分析应用进程的创建、Activity的启动,以及它们和AMS之间的交互等知识 分别以Broadcast和Service为例,分析AMS中Broadcast和Service的相关处理流程 以一个Crash的应用进程为出发点,分析AMS如何打理该应用进程的身后事 AMS中应用进程的调度、内存管理 Content
2016-10-12 14:18:44 548
原创 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 581
原创 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 4265
原创 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 731
原创 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 546
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人