
Android操作系统
文章平均质量分 87
低调小一
Ubuntu重度患者,曾经的服务器开发工程师,如今正在深入学习到Android Framework
展开
-
Android Intent 源码学习
前言 这篇文章主要是介绍一下Android Intent,并且从Android源码的角度对Intent查询匹配过程进行分析。Intent介绍 Intent的中文是“意图”的意思,而意图是一个非常抽象的概念,那么在Android的编码设计中,如何实例化意图呢?因此Android系统明确指定一个Intent可由两方面属性来衡量。主要属性:包括Action和D原创 2015-01-06 18:13:46 · 2583 阅读 · 0 评论 -
Android WakeLock详解
目录目录前言WakeLock使用WakeLock levelAndFlags和使用场景参考场景WakeLock源码分析结束语前言不知道大家是否也想过,当你手机灭屏的时候,为什么一条微信或者QQ信息能够点亮你的屏幕? 答案就是Android的WakeLock机制。这篇文章主要是介绍如何使用WakeLock,应该还达不到详解的地步,各位同学感兴趣的可以看一下WakeLock的基本使用方法。原创 2015-07-14 14:00:07 · 26960 阅读 · 2 评论 -
Android Zygote源码分析
目录目录概述zygote分析AppRuntime分析创建虚拟机startVm注册JNI函数startReg进入JAVA世界建立IPC通信服务端registerZygoteSocket预加载类和资源preload启动system_server有求必应之等待请求runSelectLoop概述在Android系统中,所有的应用程序进程,以及用来运行系统关键服务的System进程都是由原创 2015-04-29 20:33:32 · 4969 阅读 · 0 评论 -
Android Logger日志系统
目录目录前言运行时库层日志库liblog源码分析CC日志写入接口Java日志写入接口前言该篇文章是我的读书和实践笔记。参考的是《Android系统源代码情景分析》。运行时库层日志库——liblogAndroid系统在运行时库层提供了一个用来和Logger日志驱动程序进行交互的日志库liblog。通过日志库liblog提供的接口,应用程序就可以方便地往Logger日志驱动程序中写入日志记录。原创 2015-08-10 10:47:20 · 6491 阅读 · 0 评论 -
Android init进程——属性服务
目录目录概述属性服务属性服务初始化创建存储空间__system_property_area_initinit_workspace客户端进程访问属性内存区域属性服务器的分析启动属性服务器服务端处理设置属性请求客户端发送请求概述init是一个进程,确切的说,它是Linux系统中用户空间的第一个进程。由于Android是基于Linux内核的,所以init也是Android系统中用户空原创 2015-08-05 14:33:16 · 6602 阅读 · 0 评论 -
Android消息处理机制——Looper、Handler、Message 源码分析
学习Android源码,分析Handler、Looper、Message,欢迎指导!原创 2014-08-03 16:10:12 · 4680 阅读 · 4 评论 -
AndroidL 开机展示Keyguard锁屏机制初探
目录目录锁屏时序图锁屏加载流程PhoneWindowManagerKeyguardServiceDelegateKeyguardServiceWrapperKeyguardServiceKeyguardViewMediatoronKeyguardLockedshowLockedhandleShowStatusBarKeyguardViewManagershow原创 2015-11-07 17:15:16 · 8590 阅读 · 0 评论 -
Android LayoutInflater原理分析,深入理解View(一)
转载本文转自郭霖的专栏。在公司各种拥抱变化,可能又要转回Android应用开发了。趁着空档的机会学习一下View的实现机制。LayoutInfalter首先,来看一下LayoutInflater的用法。LayoutInflater有两种写法,分别为:工厂模式。LayoutInflater mLayoutInflater = LayoutInflater.from(context);Server转载 2015-09-24 00:30:32 · 2030 阅读 · 0 评论 -
Android L Settings实现
概述Android L的settings界面实现和Android4.4版本有很大的不同,在Android L中,setting是使用dashboard等控件进行了重新实现。具体流程如下。初始化流程Android L Settings模块首界面为Settings,继承自SettingsActivity,而SettingsActivity继承自Activity。首先看一下Settings.java代码,原创 2015-10-28 17:47:49 · 3173 阅读 · 0 评论 -
Android5.0 Settings各个子模块跳转和布局实现
前言今天要很任性的研究一下Android5.0中Settings子模块的跳转实现。Settings应用的Launcher类我们首先看一下Settings应用的Launcher类。查看package/app/Settings/AndroidManifest.xml文件: <activity-alias android:name="Settings" and原创 2016-01-21 17:43:58 · 13528 阅读 · 7 评论 -
Scroller源码详解
View弹性滑动详解之前写了一个滚动选择控件 ,在这个控件中我设计了弹性滚动的实现机制,再了解View弹性滚动之前,我们先来学习一下View滚动机制的实现.View的scrollTo/scrollBy这里基于Android5.0版本的源码介绍View类中这两个函数的具体实现.scrollTo源码如下:/** * 对View设置滚动的x和y轴坐标. * @param x x轴滚动的终点坐标 *原创 2016-05-26 21:03:53 · 6670 阅读 · 0 评论 -
源码角度深入理解Activity
目录目录前言Activity相关类介绍ActivityThread前言这篇博客的名字起的很大,我自己也很担心是否有能力来从源码的角度深入分析Activity。 写这篇博客的起因是因为最近一直利用空闲时间在学习《Android开发艺术探索》,今天总算读完一遍,但是其中第九章节“四大组件的工作过程”一直让我介怀,感觉自己并没有真正的搞懂。 所以这里也是花时原创 2015-12-30 17:14:07 · 3388 阅读 · 1 评论 -
Android Binder
Binder进程间通信库Android系统在应用程序框架层将各种Binder驱动程序操作封装成了一个Binder库,这样进程就可以方便调用Binder库提供的接口来进行进程间通信。在Binder库中,Service组件和Client组件分别使用模板类BnInterface和BpInterface来描述,其中,前者称为Binder本地对象(Binder Native),后者称为Binder代理对象(B转载 2015-07-09 18:09:02 · 4144 阅读 · 0 评论 -
Android智能指针——读书笔记
目录结构目录结构概述背景知识GC经典问题轻量级指针实现原理分析构造函数析构函数应用实例分析强指针和弱指针强指针的实现原理分析增加对象的弱引用计数增加对象的强引用计数sp的析构函数实现小结弱指针的实现原理分析wp类的构造函数实现wp类的析构函数实现wp类的promote函数实现对象同时被其他强指针引用对象没有被其它强指针引用应用实例分析weightpoint原创 2015-07-09 11:31:28 · 6791 阅读 · 1 评论 -
Android Toast源码分析
前言 这周去杭州参加了百阿培训,见到了传说中的牛人多隆大神。从多隆大神身上看到了做技术人的纯粹,单纯。除了见到多隆大神,这次培训并没有太多的收获,反而培训过程中遇到了好多产品上的Bug,远程办公快累到死。总结一下跟Toast相关的问题,首先从深入学习Toast的源码实现开始。Toast源码实现 我们在使用Toast提示的时候,一般都是一行简单的代码调用,如下所示:原创 2015-02-01 16:31:29 · 6596 阅读 · 7 评论 -
Android消息处理机制——AsyncTask 源码解析
前言之前写过一篇Android消息转载 2014-08-13 16:10:33 · 1264 阅读 · 2 评论 -
Android进程间通信(IPC)Binder机制——Service Manager
前言 我觉得搞懂Android进程间通信机制也是很牛逼的事情,是比较牛逼的事情我都想去学习。转载一篇老罗关于Android进程间通信的博客,一点点的学习。最近确实是有很多烦心的事情,有些无奈,但是我觉得自己遇到任何事情都应该积极去面对,不逃避。内容 Android系统进程间通信机制Binder的总体架构,是由Client、Server、Service Manager转载 2015-01-20 17:01:06 · 1377 阅读 · 0 评论 -
Binder进程间通信机制的Java接口
概述Java代码可以通过JNI方法来调用C/C++代码,因此,Android系统在应用程序框架层中提供了Binder进程间通信机制的Java接口,它们通过JNI方法来调用Binder库的C/C++接口,从而提供了执行Binder进程间通信的能力。 主要从以下几个使用场景来分析Binder进程间通信机制的Java接口:ServiceManager的Java代理对象的获取过程。Java服务接口的定转载 2015-03-16 12:27:18 · 4133 阅读 · 0 评论 -
Android编译系统环境初始化过程
目录目录lunch命令的执行过程get-all-product-makefiles_find-android-products-filesget-product-makefileslunch命令的执行过程get-all-product-makefiles函数get-all-product-makefiles定义在文件build/core/product.mk中,如下所示:# # Retur转载 2015-03-12 16:40:43 · 1259 阅读 · 0 评论 -
Android init进程——源码分析
概述Android本质上是一个基于Linux内核的操作系统,与Ubuntu类似原创 2014-11-07 14:50:21 · 1888 阅读 · 0 评论 -
Android init进程——解析配置文件
目录目录init解析配置文件关键字定义kw_is解析K_importK_oncommand执行K_serviceserviceservice结构体parse_serviceparse_line_serviceinit控制serviceinit解析配置文件在解析service服务是如何启动之前,让我们先来学习一下init进程是如何解析init.rc等配置文件的。init进程原创 2015-04-21 14:30:09 · 4713 阅读 · 0 评论 -
Android Binder驱动程序
Binder驱动程序Binder驱动程序实现在内核中,它主要由binder.h和binder.c两个源文件组成。下面我们就开始介绍Binder驱动程序的基础知识,包括基础数据结构、初始化过程,以及设备文件/dev/binder的打开(open)、内存映射(mmap)和内核缓冲区管理等操作。基础数据结构在Binder驱动程序中有两种类型的数据结构,其中一种是在内部使用的,另一种是在内部和外部均会使用到原创 2015-06-17 17:19:22 · 3889 阅读 · 0 评论 -
Android C++中线程同步实现
前言Android Framework中的线程同步主要就是对pthread的mutex和condition的封装。所以学习之前,建议先了解一个C++中线程同步的实现,参考链接:C++ 中线程学习MutexAndroid Mutex的实现源码位于/system/core/include/utils/Mutex.h,我们先来看一下Mutex类的具体实现:class Mutex {public:原创 2015-06-24 12:19:49 · 6340 阅读 · 0 评论 -
Android Touch事件分发响应机制
概述在Android中,事件包括了点按、长按、拖拽、滑动等,这些事件才能让Android响应用户的各种操作。但是归根结底,所有的这些事件都是以如下三个部分作为基础的:ACTION_DOWN(按下)ACTION_MOVE(移动)ACTION_UP(抬起)所有的操作事件首先必须执行ACTION_DOWN(按下)操作,之后所有的操作都是以按下操作为前提,当按下操作完成后,接下来可能是一段ACTIO原创 2015-08-19 20:36:00 · 2027 阅读 · 0 评论