- 博客(35)
- 收藏
- 关注
原创 InputManagerService分析一:IMS的启动与事件传递
从这一节里面,我们开始介绍WindowManagerService部分
2014-06-13 10:43:19
15452
1
原创 Android Looper和Handler分析
Android应用程序是通过消息来驱动的,每个应用程序都有一个Main looper在ActivityThread中创建。
2014-06-05 20:39:46
5492
原创 ActivityManagerService分析一:AMS的启动
这一章我们开始分析ActivityManagerService,在后面的介绍中,我们简称为A
2014-06-04 14:55:19
17584
原创 Android PackageManagerService分析三:卸载APK
这一章我们介绍APK的卸载过程,通过前一章介绍APK的安装过程,我们
2014-05-21 14:42:16
12245
转载 dexopt优化和验证Dalvik (Dalvik Optimization and Verification With dexopt)
原文详见:http://www.netmite.com/android/mydroid/dalvik/docs/dexopt.htmldalvik的设计的初衷就是运行在像Android这样的小RAM,低速度flash memory,运行标准Linux系统的设备。针对这样的平台特性,要想做到更好,我们需要考虑以下几点:1)为了减少系统的内存使用,字节码可以多进程共享。但出于安全性
2014-05-16 11:36:04
3437
转载 字符编码笔记:ASCII,Unicode和UTF-8
今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。1. ASCII码我们知道,在计
2014-05-14 16:29:18
974
原创 Android PackageManagerService分析一:PMS的启动
从这一章开始,我们来分析Android的PackageManagerService,后面简称P
2014-05-13 16:19:01
27443
4
原创 Android Binder分析五:Java service的获取和调用
前面介绍过注册Java Service的流程,这一章我们来看应用程序如何调用Java Service的接口
2014-04-24 14:51:04
13175
3
原创 Android Binder分析四:Java service的注册
这一章通过WifiService来分析一下在Java framework中如何注册Service,
2014-04-23 17:32:40
3293
原创 Android Binder分析三:Natvie Service的获取和调用
这一章,我们通过分析如何获取MediaPlayerService,并调用其中的方法。
2014-04-22 17:43:10
3231
原创 Android Binder分析二:Natvie Service的注册
这一章我们通过MediaPlayerService的注册来说明注册Service的过程
2014-04-22 11:44:05
3173
原创 Android智能指针分析(sp、wp)
在Android native编写代码时,会经常接触到sp、wp,sp并不是smart pointer
2014-04-14 15:52:41
16486
1
原创 Android WifiDisplay分析二:Wifi display连接过程
Wifi Display如何建立连接过程并成功的开始在RTSP socket上开始listen
2014-04-09 17:42:14
39208
6
转载 media and camera 框架之二: MediaRouter
当用户使用无线技术连接电视,家庭影院和音乐播放器时,他们希望android apps的内容可以在这些大屏幕的设备上播放。启用这种方式的播放,能把一台设备一个用户模式变为一个乐于分享的、令人激动和鼓舞的多用户模式。android媒体路由接口被设计成可以在二级设备上呈现和播放媒体。通过使用这些APIs来播放内容有两种实现方式可供使用:远程播放:当用户手里的一个android设备
2014-04-04 15:46:43
10093
原创 Android WifiDisplay分析一:相关Service的启动
最近在学习Android 4.4上面的WifiDisplay(Miracast)相关的模块,这里先从WifiDisplay用到的各个Service讲起,然后再从WifiDisplaySettings里面讲解打开wfd的流程。首先看下面的架构图:相关Service的启动图中主要有以下几个模块,DisplayManagerService、MediaRouterService、WifiD
2014-04-04 15:37:41
20781
3
原创 WifiP2pService的启动以及P2P的连接
这一章主要总结从WifiP2pService的启动到用户通过四种连接方式连接P2P的过程,四种方式包括:主动连接、被动连接、主动invite和被动invite。首先来看WifiP2pService的启动。WifiP2pService的启动WifiP2pService的创建以及启动是在SystemServer中,主要代码如下: wifiP2p
2014-04-02 14:30:46
26033
原创 Android WiFi 扫描和连接热点
本章主要介绍用户手动的在Settings中点击Scan和Connect按钮,输入密码后的连接过程,先看整体流程图:WiFi Scan过程分析当用户进入Settings点击Scan后,就会调用到WifiManager的startScan()方法,当然在Settings里面有设置Scan的定时器,每隔一段时间就会去scan,在Wifi Framework中也有scan的定时器。对照上面
2014-04-01 11:45:30
32615
原创 Android WiFi Toggle ON/OFF流程分析
WiFi toggled on流程分析这一章来分析一下从Settings打开wifi后,framework所有的流程以及状态转换,调用的主要函数就是WiFiMananger的setWifiEnabled(boolean enabled),这个函数在前面介绍的WifiService启动流程中也有提到,当SystemServer 创建了个WifiService后,就会调用它的checkAndS
2014-03-28 10:56:01
9736
原创 Android StateMachine和AsyncChannel
在学习Android Wifi的code时,到处可以看到StateMachie和AsyncChannel的影子,这里我们先大致分析一下它们两个的原理。StateMachine原理分析顾名思义,StateMachine就是状态机的意思,从Goolge给出的解释:The state machine defined here is a hierarchical state mac
2014-03-25 15:39:12
7492
原创 Android WifiService的启动流程分析
最近在学习Android WiFi framework的相关知识,这里总结以下。WiFi framework的内容大致可以分为以下几个模块:1. WiFi相关内容2.WiFi P2P相关内容3.Hotspot相关内容4.WiFi Display相关内容后面就将从这四个方面一一介绍。WiFi service的启动流程Wifiservice的启动地方在system
2014-03-24 17:18:30
7677
1
转载 signed和unsigned之间
这样一个题,据说是微软面试题: unsigned int i=3;cout问结果是多少。 第一反应:-3。不过结果似乎不是这样的,写了个程序,运行了一下,发现是:4294967293。很诡异的一个数字,怎么也想不明白为什么会是这么个奇怪的数字。但是在我发现这数的十六进制数是FFF
2011-07-13 14:22:26
761
转载 Fibonacci序列
http://www.cnblogs.com/flyinghearts/archive/2011/03/22/1991983.html
2011-05-11 10:42:00
658
转载 KD Tree - Searching in N-dimensions
<br />K-d tree for multi-dimensional nearest neighbours<br /> <br />http://www.codeproject.com/KB/architecture/KDTree.aspx
2011-05-06 17:17:00
931
转载 Finding Kth Minimum (partial ordering) – Using Tournament Algorithm
<br />Ok, so far in my previous blog entries about finding 2nd minimum (and for repeating elements) I wrote about efficient algorithm for finding second minimum element of an array. This optimized algorithm takes O(n + log(n)) time (worst case) to find the
2011-05-06 10:56:00
1610
转载 Finding Second Minimum element in an Array
<br /><br />How would you find minimum element in an array (non-repeating random numbers) ? Well, the solution is obvious, you pick first element and compare with the next and keep the lower of the two. Do this again by comparing result of first comparison
2011-05-06 10:53:00
993
转载 Android Display System --- Surface Flinger
SurfaceFlinger 是Android multimedia 的一个部分,在Android 的实现中它是一个service ,提供系统 范围内的surface composer 功能,它能够将各种应用 程序的2D 、3D surface 进行组合。在具体讲SurfaceFlinger 之前,我们先来看一下有关显示方面的一些基础 知识 。1 、原理 分析让我们首先看一下下面的屏幕简略图:每个应用程序可能对应着一个或者多个图形界面,而每个界面我们就称之为一个surface ,或者说是window ,在上
2011-05-05 18:12:00
915
转载 Android的IPC机制Binder的详解汇总
1.1 驱动程序部分驱动程序的部分在以下的文件夹中: Java代码 kernel/include/linux/binder.h kernel/drivers/android/binder.c binder驱动程序是一个miscdevice,主设备号为10,此设备号使用动态获得(MISC_DYNAMIC_MINOR),其设备的节点为: /dev/binder binder驱动程序会在proc文件系统中建立自己的信息,其文件夹为/proc/binder,其中包含如下内容: proc目录:调
2011-05-03 14:02:00
987
转载 android应用的启动流程
<br /><br />1. 说明<br />应用的启动过程通常是通过startActivity函数,无论是在应用中调其它应用还是在桌面(桌面是Launcher应用)上点击,最终都将通过这个函数启动进程或者界面,下面以分析代码的方式,介绍它具体的工作过程<br />2. 过程<br />1) packages/apps/Launcher2/src/com/android/launcher.java<br />在应用或桌面上启动应用,例如桌面应用的启动由于中调用函数流程startAc
2011-04-29 12:26:00
4572
原创 Android启动过程
<br /> <br /> <br />Android从Linux系统启动有4个步骤;<br />(1) init进程启动<br />(2) Native服务启动<br />(3) System Server,Android服务启动<br />(4) Home启动<br /> <br />总体启动框架图如:<br /> <br /> <br /><br /> <br /> init进程,它是一个由内核启动的用户级进程,它以守护进程的方式运行,它提供以下基本功能:<br /> 1.设备管理<br
2011-04-28 18:42:00
1940
转载 Android build system note
1. Android编译系统分析编译脚本及系统变量build/envsetup.sh脚本分析在编译源代码之前通常需要在android源代码顶层目录执行 . ./build/envsetup.sh 目的是为了使用脚本 envsetup.sh 里面定义了一些函数:function help()function get_abs_build_var()function get_build_var()function check_product()function check_va
2011-04-27 14:56:00
1195
原创 0-1矩阵中找0,1间隔矩阵
<br /> 例如从: 0 1 0 1 0 中找出最大0,1间隔矩阵,结果应用从第一行第一列到第三行第四列的矩阵 0 1 0 1 ,算法实现参照从0-1矩阵中找全<br /> 1 0 1 0 0
2011-04-27 12:17:00
2539
原创 typeid详解
<br />typeid是C++的关键字之一,等同于sizeof这类的操作符。typeid操作符的返回结果是名为type_info的标准库类型的对象的引用(在头文件typeinfo中定义,稍后我们看一下vs和gcc库里面的源码),它的表达式有下图两种形式。<br /> <br /> <br /> 如果表达式的类型是类类型且至少包含有一个虚函数,则typeid操作符返回表达式的动态类型,需要在运行时计算;否则,typeid操作符返回表达式的静态类型,在编译时就可以计算。<br />
2011-04-27 11:52:00
1753
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人