- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 ART学习笔记Thread SuspendAll部分
昨天碰到了一个Gc 时Suspend All 超时导致的Runtime abort问题。顺带就研究了下Suspend的机制以及超时检查的机制。在进程被signal 3或者GC或者debugger尝试attach,就会suspend,那么suspend是如何实现的呢?
2015-07-23 15:58:19 12509 2
原创 ART学习笔记 Rosalloc alloc部分
Rosalloc就是google版本的Dlmalloc,负责连续地址的分配。分配策略和dlmalloc类似,也是分箱制,至于传言中的比dlmalloc效率高支持多核我是没看出来。不过代码倒是比dlmalloc写的较人能看懂了点。--------------------------------------免责声明: |以下内容仅供参考 |--
2015-07-17 10:22:50 2201
原创 [Linux学习笔记] Zombie process
今天外面很冷,窝在酒店就看了下Unix环境编程,看到exit的时候发现了关于zombie 进程
2014-11-16 17:06:02 1064
原创 android JNI bridge ----- native和java世界的红娘 (施工中)
本文主要讲述Java程序如何调用native的程序以及native如何回调java,以及这种jiz
2014-04-14 21:20:33 2825
原创 2.3.5/4.0.3/4.1PowerManager简单总结和心得体会
4.4上的PMS被完全重构了,在接手4.4 PMS之前对之前PowerManagerService做一个总结。
2014-04-14 21:15:04 1100
原创 GDB调试和NATIVE内存问题分析整理
前段时间分析了一个疑似内存泄露的问题,自己总结下。 1. 当出现很大size的内存泄露的时候,一般情况下都是native的,很有可能会发生OOM导致的NE。2. 怀疑是内存泄露的时候,可以通过while脚本隔几秒打印一次procrank来确定,如果某个PID的PSS/USS 一直在上升,那么狠有可能就是他了。3. 当定位到某个PID之后,可以每隔一段时间将其 /proc/pid
2013-08-25 17:48:21 1226
原创 android webkit学习笔记1---url的load过程
webkit总体上分成两块,核心库,android适配层。下面通过webkit打开baidu来分析下具体的过程,就可以知道webkit的工作模式了。1. 首先是app中创建了webView,并调用它的loadurl方法: mWebView.loadUrl("http://www.baidu.com");2. frameworks/base/cor
2013-06-19 17:56:32 6568
原创 【android学习笔记】init.rc中声明的守护进程启动的流程
在Init.rc中,用service关键字声明了一系列服务.init.rc对service的说明如下:(详见system/core/init/readme.txt)Services--------Services are programs which init launches and (optionally) restartswhen they exit. Services tak
2013-05-02 14:48:33 7062 3
原创 android学习笔记 匿名Binder
匿名binder就是没有向servicemanager提交注册的binder。对于已经建立好Binder通信的Client和server,server可以将一个Binder的引用传递给client,client可以通过这个引用来访问server。那么这种匿名的访问是怎么建立起来的?在server被唤醒后为什么可以通过target-ptr找到bbinder呢?答案就在第一次返回这
2013-04-07 22:51:21 4907 1
原创 Android Activity是怎么画出来的
Activity是在onResume里显示出来的,下面看下具体的流程。 ActivityThread.java final void handleResumeActivity(IBinder token, boolean clearHide, boolean isForward) {// ... if (r.window == null && !a.mF
2013-03-31 16:40:36 2453
原创 android TP虚拟按键
在TP的driver中,报虚拟按键的方法常见的有两种:1.直接报键值(kernel的)2.报一个坐标,上层通过KL的解析来判定是哪个键。下面说下第二种:TP的kl被存放在/sys/board_properties/virtualkeys.devicename中,pull出来后可以看看内容:0x01:139:100:900:40:60:0x01:158:400:9
2013-02-27 14:48:30 4259
原创 android 自定义preference的属性
最近碰到了个问题,我想调整checkboxpreference中的图片的大小以及位置,学习了下发出来:1. 拷贝并重命名framework/base/core/res/res/layout/preference.xml到你的工程目录res/layout/,如mypreference.xml2. 修改mypreference中你想修改对应的属性,不赘述,大家都会。3. 如果是用静态加载p
2013-02-21 11:40:35 4622
原创 android学习笔记7 android简略开机流程(从u-boot 到Idle)
本来应该说说kernel中的input子系统和上层的对应关系的,但是碰到了开机的一些问题,下定决心把这个过程搞清楚。U-boot之前的SPL的启动暂且不提,我们从U-boot在上电后被SPL从NAND中拷贝至SDRAM,然后执行board_init_f 跳转到board_init_r开始。u-boot里的流程大家可以通过打串口log来看。u-boot\arch\arm\lib\boa
2012-11-26 23:58:33 7319 9
原创 android学习笔记6 eventhub
Eventhub是在Native 的inputmanager创建的时候被创建的,inputreadthread就通过eventhub的getevent方法来源源不断的获取driver上报的input事件。 bool EventHub::getEvent(RawEvent* outEvent){ if (!mOpened) { mError = ope
2012-11-02 11:12:21 4338
原创 android学习笔记5 android按键事件处理代码走读[framework]
上层的对按键事件的侦听和纷发处理是通过inputmanager及其组件inputreader,inputdispatch,eventhub构成的。在system_server被创建的时候就会创建WMS,并调用inputmanager的start方法来启动read和dispatch线程。 1. Inputmanager的创建Systemserver的ServerThread
2012-10-23 17:17:36 4350
原创 android学习笔记 按电源键屏幕唤醒和屏幕睡眠流程(从上层到kernel)
一. 屏幕的唤醒 首先inputread在读取到有keyboard事件上报后,会调用到keydispatch的notifykey,去询问wm是否会对这次按键特殊处理,如果WM不处理,则此处会点亮或者熄灭屏幕。 inputReader.cpp KeyboardInputMapper::processKey
2012-10-14 20:12:57 33174 15
原创 android 学习笔记3--静默安装功能的实现
静默安装的实现比较简单,但是有个前提:你的应用必须有system权限。所以分为两步:1. 如何获取system权限。 ①. 修改androidmanifest.xml , android:sharedUserId="android.uid.system" ②. 修改android.mk ,增加LOCAL_CERTIFICATE := platform
2012-09-27 11:07:09 2629 1
原创 android学习笔记2 彩信APN切换流程(framework)
TransactionService之前的流程比较简单不在赘述,现在主要理清下从TransactionService到framework的流程。 首先会走到TransactionService的onStartCommand,在此函数中会对当前网络状态进行判断,然后调用到launchTransaction,如果此时网络不可用,会弹出toast,否则就向自己的handler发送EVENT_TR
2012-04-19 16:05:32 5062
原创 [android学习1]横竖屏切换的机理
因为最近遇到了几个奇怪的bug,所以下定决心把横竖屏切换的机制搞清楚,现在和大家分享下:首先是phonewindowmananger里会注册windoworientationlistener,当sensor有事件上报后,会调用onOrientationChanged,继续调用WMS里的接口setRotation。在setRotation里会对config进行判断,如果发生了变化
2012-03-28 11:25:03 2261
原创 linux学习笔记3 初始化的一些补充
在kernel_init里会调用do_basic_setup();按照level依次调用moduleinit()声明过的模块初始化函数来初始化编译进内核的模块在随后的init_post()里会起init进程,会加载各个动态模块,同样也是module_init()声明的函数动态模块的makefile是 obj-m:*.0静态是 obj-y:*.0在menuconfig里也可以看到
2012-02-02 14:40:40 1080 1
原创 linux学习笔记2--diver初始化及设备模型
driver的初始化,主要是填充了device_driver里的driver_private这个结构体:struct driver_private {struct kobject kobj;struct klist klist_devices;struct klist_node knode_bus;struct module_kobject *mkobj;struct
2012-01-18 10:39:46 1817 1
原创 Linux 学习笔记1 --- kernel初始化以及module_init(x)解析
粗略的看了下,kernel大致的初始化流程为:setup.c kernel/\arch\parisc\kernel start_parisc // init arm main .c kernel/init/ start_kernel // init main .c kernel/init/ rest_init ma
2012-01-13 22:39:02 3618 1
原创 linux wine最新版本 的安装
sudo add-apt-repository ppa:ubuntu-wine/ppa sudo apt-get update sudo apt-get install wine~/.wine/drive_c/windows/Fonts/ #只留一个你想要显示的中文字体在这
2012-01-13 20:38:27 815
原创 PC-lint9 集成至vs2008及配置
Setp 1:运行config.exe对std.lnt进行配置时,勾上对VS2008的支持,这里不在赘述,网上关于此的文章非常多。Setp 2:打开vs 2008,点击Tools->External ToolsSTEP 3 : 选择ADD,输入如下内容:Title : 随便起个,方便记忆command: 输入你lint的路径arguments: -i
2011-12-16 12:12:02 1632
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人