<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[shadow_dance的专栏]]></title><description><![CDATA[路漫漫其修远兮]]></description><link>https://blog.youkuaiyun.com/shadow_dance</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; shadow_dance]]></copyright><item><title><![CDATA[ART学习笔记Thread SuspendAll部分]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/47020899</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/47020899</guid><author>shadow_dance</author><pubDate>Thu, 23 Jul 2015 15:58:19 +0800</pubDate><description><![CDATA[昨天碰到了一个Gc 时Suspend  All 超时导致的Runtime abort问题。
顺带就研究了下Suspend的机制以及超时检查的机制。

在进程被signal 3或者GC或者debugger尝试attach，就会suspend，那么suspend是如何实现的呢？]]></description><category></category></item><item><title><![CDATA[ART学习笔记 Rosalloc alloc部分]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/46923625</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/46923625</guid><author>shadow_dance</author><pubDate>Fri, 17 Jul 2015 10:22:50 +0800</pubDate><description><![CDATA[Rosalloc就是google版本的Dlmalloc，负责连续地址的分配。
分配策略和dlmalloc类似，也是分箱制，至于传言中的比dlmalloc效率高支持多核我是没看出来。
不过代码倒是比dlmalloc写的较人能看懂了点。
--------------------------------------
免责声明：            |
以下内容仅供参考       |
--]]></description><category></category></item><item><title><![CDATA[[Linux学习笔记] Zombie process]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/41174051</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/41174051</guid><author>shadow_dance</author><pubDate>Sun, 16 Nov 2014 17:06:02 +0800</pubDate><description><![CDATA[今天外面很冷，窝在酒店就看了下Unix环境编程，看到exit的时候发现了关于zombie 进程]]></description><category></category></item><item><title><![CDATA[GDB 调试Native Crash 总结]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/24187581</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/24187581</guid><author>shadow_dance</author><pubDate>Sun, 20 Apr 2014 17:49:57 +0800</pubDate><description><![CDATA[Native Crash作为常见的exception之一，gdb是分析此类问题的利器。]]></description><category></category></item><item><title><![CDATA[Android Binder 简介[施工中]]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/23785259</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/23785259</guid><author>shadow_dance</author><pubDate>Tue, 15 Apr 2014 20:41:24 +0800</pubDate><description><![CDATA[本文主要介绍Android Binder 通信的机制 （Driver 一下）]]></description><category></category></item><item><title><![CDATA[android  JNI bridge ----- native和java世界的红娘 （施工中）]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/23706575</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/23706575</guid><author>shadow_dance</author><pubDate>Mon, 14 Apr 2014 21:20:33 +0800</pubDate><description><![CDATA[本文主要讲述Java程序如何调用native的程序以及native如何回调java，以及这种jiz]]></description><category></category></item><item><title><![CDATA[2.3.5/4.0.3/4.1PowerManager简单总结和心得体会]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/23705021</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/23705021</guid><author>shadow_dance</author><pubDate>Mon, 14 Apr 2014 21:15:04 +0800</pubDate><description><![CDATA[4.4上的PMS被完全重构了，在接手4.4 PMS之前对之前PowerManagerService做一个总结。]]></description><category></category></item><item><title><![CDATA[GDB调试和NATIVE内存问题分析整理]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/10305683</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/10305683</guid><author>shadow_dance</author><pubDate>Sun, 25 Aug 2013 17:48:21 +0800</pubDate><description><![CDATA[前段时间分析了一个疑似内存泄露的问题，自己总结下。
 
1.  当出现很大size的内存泄露的时候，一般情况下都是native的，很有可能会发生OOM导致的NE。
2.  怀疑是内存泄露的时候，可以通过while脚本隔几秒打印一次procrank来确定，如果某个PID的PSS/USS 一直在上升，那么狠有可能就是他了。
3. 当定位到某个PID之后，可以每隔一段时间将其 /proc/pid]]></description><category></category></item><item><title><![CDATA[android webkit学习笔记1---url的load过程]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/9130317</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/9130317</guid><author>shadow_dance</author><pubDate>Wed, 19 Jun 2013 17:56:32 +0800</pubDate><description><![CDATA[webkit总体上分成两块，核心库，android适配层。


下面通过webkit打开baidu来分析下具体的过程，就可以知道webkit的工作模式了。


1. 首先是app中创建了webView，并调用它的loadurl方法：
     
mWebView.loadUrl("http://www.baidu.com");

2.   frameworks/base/cor]]></description><category></category></item><item><title><![CDATA[【android学习笔记】init.rc中声明的守护进程启动的流程]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/8874691</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/8874691</guid><author>shadow_dance</author><pubDate>Thu, 02 May 2013 14:48:33 +0800</pubDate><description><![CDATA[在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]]></description><category></category></item><item><title><![CDATA[android学习笔记  匿名Binder]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/8769993</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/8769993</guid><author>shadow_dance</author><pubDate>Sun, 07 Apr 2013 22:51:21 +0800</pubDate><description><![CDATA[匿名binder就是没有向servicemanager提交注册的binder。
对于已经建立好Binder通信的Client和server，server可以将一个Binder的引用传递给client，client可以通过这个引用来访问server。


那么这种匿名的访问是怎么建立起来的？在server被唤醒后为什么可以通过target-ptr找到bbinder呢？
答案就在第一次返回这]]></description><category></category></item><item><title><![CDATA[Android Activity是怎么画出来的]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/8742810</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/8742810</guid><author>shadow_dance</author><pubDate>Sun, 31 Mar 2013 16:40:36 +0800</pubDate><description><![CDATA[Activity是在onResume里显示出来的，下面看下具体的流程。
 
ActivityThread.java
    final void handleResumeActivity(IBinder token, boolean clearHide, boolean isForward) {

// ...
           if (r.window == null && !a.mF]]></description><category></category></item><item><title><![CDATA[android TP虚拟按键]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/8617594</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/8617594</guid><author>shadow_dance</author><pubDate>Wed, 27 Feb 2013 14:48:30 +0800</pubDate><description><![CDATA[在TP的driver中，报虚拟按键的方法常见的有两种：
1.直接报键值（kernel的）
2.报一个坐标，上层通过KL的解析来判定是哪个键。


下面说下第二种：


TP的kl被存放在/sys/board_properties/virtualkeys.devicename中，pull出来后可以看看内容：
0x01:139:100:900:40:60:0x01:158:400:9]]></description><category></category></item><item><title><![CDATA[android 自定义preference的属性]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/8597693</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/8597693</guid><author>shadow_dance</author><pubDate>Thu, 21 Feb 2013 11:40:35 +0800</pubDate><description><![CDATA[最近碰到了个问题，我想调整checkboxpreference中的图片的大小以及位置，学习了下发出来：
1. 拷贝并重命名framework/base/core/res/res/layout/preference.xml到你的工程目录res/layout/，如mypreference.xml
2. 修改mypreference中你想修改对应的属性,不赘述，大家都会。
3. 如果是用静态加载p]]></description><category></category></item><item><title><![CDATA[android学习笔记7 android简略开机流程（从u-boot 到Idle）]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/8228140</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/8228140</guid><author>shadow_dance</author><pubDate>Mon, 26 Nov 2012 23:58:33 +0800</pubDate><description><![CDATA[本来应该说说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]]></description><category></category></item><item><title><![CDATA[android学习笔记6  eventhub]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/8139993</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/8139993</guid><author>shadow_dance</author><pubDate>Fri, 02 Nov 2012 11:12:21 +0800</pubDate><description><![CDATA[Eventhub是在Native 的inputmanager创建的时候被创建的，inputreadthread就通过eventhub的getevent方法来源源不断的获取driver上报的input事件。
 
 
bool EventHub::getEvent(RawEvent* outEvent)
{
 
   if (!mOpened) {
       mError = ope]]></description><category></category></item><item><title><![CDATA[android学习笔记5 android按键事件处理代码走读[framework]]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/8103778</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/8103778</guid><author>shadow_dance</author><pubDate>Tue, 23 Oct 2012 17:17:36 +0800</pubDate><description><![CDATA[上层的对按键事件的侦听和纷发处理是通过inputmanager及其组件inputreader,inputdispatch,eventhub构成的。
在system_server被创建的时候就会创建WMS，并调用inputmanager的start方法来启动read和dispatch线程。
 
1.      Inputmanager的创建
Systemserver的ServerThread]]></description><category></category></item><item><title><![CDATA[android学习笔记  按电源键屏幕唤醒和屏幕睡眠流程（从上层到kernel）]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/8070252</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/8070252</guid><author>shadow_dance</author><pubDate>Sun, 14 Oct 2012 20:12:57 +0800</pubDate><description><![CDATA[一. 屏幕的唤醒
      首先inputread在读取到有keyboard事件上报后，会调用到keydispatch的notifykey，去询问wm是否会对这次按键特殊处理,如果WM不处理，则此处会点亮或者熄灭屏幕。
     inputReader.cpp                                 KeyboardInputMapper::processKey]]></description><category></category></item><item><title><![CDATA[android 学习笔记3--静默安装功能的实现]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/8024049</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/8024049</guid><author>shadow_dance</author><pubDate>Thu, 27 Sep 2012 11:07:09 +0800</pubDate><description><![CDATA[静默安装的实现比较简单，但是有个前提：
你的应用必须有system权限。
所以分为两步：
1. 如何获取system权限。
    ①. 修改androidmanifest.xml ,       android:sharedUserId="android.uid.system"
    ②. 修改android.mk ,增加LOCAL_CERTIFICATE := platform]]></description><category></category></item><item><title><![CDATA[android学习笔记2 彩信APN切换流程（framework）]]></title><link>https://blog.youkuaiyun.com/shadow_dance/article/details/7477957</link><guid>https://blog.youkuaiyun.com/shadow_dance/article/details/7477957</guid><author>shadow_dance</author><pubDate>Thu, 19 Apr 2012 16:05:32 +0800</pubDate><description><![CDATA[TransactionService之前的流程比较简单不在赘述，现在主要理清下从TransactionService到framework的流程。
 
首先会走到TransactionService的onStartCommand，在此函数中会对当前网络状态进行判断，然后调用到launchTransaction，如果此时网络不可用，会弹出toast，否则就向自己的handler发送EVENT_TR]]></description><category></category></item></channel></rss>