<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Dylan_Sen的博客]]></title><description><![CDATA[人生太闲，则别念窃生！]]></description><link>https://blog.youkuaiyun.com/Dylan_Sen</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Dylan_Sen]]></copyright><item><title><![CDATA[Android中的系统级共享库]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/150215844</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/150215844</guid><author>Dylan_Sen</author><pubDate>Fri, 13 Mar 2026 11:10:35 +0800</pubDate><description><![CDATA[开发时运行时Android上面由于分区的限制，libbinder_nkd.so可以帮助vendor分区的native 进程访问system分区的libbinder.so，这个是针对运行时。对于第三方Native 代码，从编译和链接的层面要使用NDK中提供的libbinder_ndk。从运行时考虑，如果相关代码安装在system分区那么libbinder_ndk也是可以正常链接的，如果安装在vendor分区那么libbinder_ndk也是可以正常链接的。fill:#333;important;]]></description><category></category></item><item><title><![CDATA[Android Graphics - openGL and Vulkan小结]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/149420861</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/149420861</guid><author>Dylan_Sen</author><pubDate>Fri, 13 Mar 2026 10:54:00 +0800</pubDate><description><![CDATA[通过下面的flowchart(deepseek提供)，可以看清楚openGL ES，EGL和Vulkan的作用：fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;important;important;important;important;important;important;important;important;important;]]></description><category></category></item><item><title><![CDATA[Android Focus小结]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/147783489</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/147783489</guid><author>Dylan_Sen</author><pubDate>Fri, 13 Mar 2026 10:53:37 +0800</pubDate><description><![CDATA[本篇题目是“Android Focus管理”，内容包括Input focus和Accessibility focus。文章大纲：focus的分类window focus的控制逻辑window内view focus的控制逻辑touch mode如何发生变化，发生变化后对view的影响，比如已经highlight的UI是否会清除？哪些内容？Touch mode: Touch mode 下，大部分view是不需要有focus 效果的;]]></description><category></category></item><item><title><![CDATA[Android graphics - 框架摘要]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/148901863</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/148901863</guid><author>Dylan_Sen</author><pubDate>Fri, 13 Mar 2026 10:52:02 +0800</pubDate><description><![CDATA[下图从binary level总结了Graphic相关的代码，不注重细节，主要目的是展示Android实现的思路和大框架，角度有区别于Android官网的文档，算是一个补充。图中绿色的线主要展示渲染相关的流程；紫色的线主要展示合成和显示的流程；红色的线展示了BLASTBufferQueue分配内存的流程。]]></description><category></category></item><item><title><![CDATA[Android accessibility小结]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/145847178</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/145847178</guid><author>Dylan_Sen</author><pubDate>Thu, 08 May 2025 11:08:09 +0800</pubDate><description><![CDATA[ViewRootImpl是Accessibility和View关联的桥梁，ViewRootImpl通过IAccessibilityInteractionConnection和AccessibilityManagerService通信，把view hierarchy中的信息传递给AccessibilityManagerService。方法中会去bind被enable的AccessibilityService，系统为AccessibilityService的管理提供了菜单，相关的Settings item是。]]></description><category></category></item><item><title><![CDATA[Android Car Input HAL]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/122106043</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/122106043</guid><author>Dylan_Sen</author><pubDate>Wed, 07 May 2025 14:02:06 +0800</pubDate><description><![CDATA[Android Car在代码路径"packages/services/Car/service/src/com/android/car/hal/"下有很多的HAL 类，比如PropertyHalService, PowerHalService等，InputHalService也是其中的一员。]]></description><category></category></item><item><title><![CDATA[编译，链接，加载]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/143167283</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/143167283</guid><author>Dylan_Sen</author><pubDate>Mon, 28 Oct 2024 15:50:29 +0800</pubDate><description><![CDATA[编译、链接、加载是基础，十几年前从_《深入理解计算机系统》_等相关书籍中获得了比较全面的理解，现在已经变得有些模糊了。当时没有做总结的习惯，现在零零散散的记一些吧，有时间还要重温书本。]]></description><category></category></item><item><title><![CDATA[JNI概要]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/143166868</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/143166868</guid><author>Dylan_Sen</author><pubDate>Mon, 28 Oct 2024 15:42:50 +0800</pubDate><description><![CDATA[Java Native Interface（JNI）是Java语言的本地编程接口，是J2SDK的一部分。Interface这个词在开发中比较常见，下图展示了Java Native Interface的作用。可以看看Android 源码_“frameworks/core/jni”_路径下的代码帮助理解，比如其中的AndroidRuntime.cpp。定义在jni.h中。在java程序中，我们可以通过JNI实现一些用java语言不便实现的功能。通常有以下几种情况我们需要使用JNI来实现。]]></description><category></category></item><item><title><![CDATA[Android VNDK笔记]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/143167350</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/143167350</guid><author>Dylan_Sen</author><pubDate>Tue, 22 Oct 2024 20:24:24 +0800</pubDate><description><![CDATA[vndk: {vndk: {llndk: {]]></description><category></category></item><item><title><![CDATA[AIDL笔记]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/143166700</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/143166700</guid><author>Dylan_Sen</author><pubDate>Tue, 22 Oct 2024 19:52:19 +0800</pubDate><description><![CDATA[编写 .aidl 文件替换 .hal文件(Stable AIDL 具有向后兼容性需要使用libbinder_ndk， 而libbinder_ndk的backend是core libbinder， 使用"/dev/binder"进行通信。]]></description><category></category></item><item><title><![CDATA[Android assistant]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/116004864</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/116004864</guid><author>Dylan_Sen</author><pubDate>Sun, 26 Sep 2021 16:23:49 +0800</pubDate><description><![CDATA[Code

frameworks/base/core/java/android/speech/
frameworks/base/core/java/android/speech/tts/
frameworks/base/core/java/android/service/voice/
frameworks/base/services/voiceinteraction/

Test code

frameworks/base/tests/SoundTriggerTestApp
frameworks/base/]]></description><category></category></item><item><title><![CDATA[Android Memory management]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/83716540</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/83716540</guid><author>Dylan_Sen</author><pubDate>Tue, 15 Sep 2020 19:50:20 +0800</pubDate><description><![CDATA[https://developer.android.com/topic/performance/memory-overview
Android Runtime(ART)和Dalvik使用页(paging)和内存(memory-mapping)映射来管理内存。
一个app修改过的内存，只能通过释放对象引用的方式让garbage collector回收;
唯一的例外是映射的文件如果没有被修改过，那么系...]]></description><category></category></item><item><title><![CDATA[剖析ContentProvider的query操作]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/103958836</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/103958836</guid><author>Dylan_Sen</author><pubDate>Mon, 20 Jan 2020 14:06:53 +0800</pubDate><description><![CDATA[年终(农历年)的一篇任务文档。
本篇剖析ContentProvider的query操作，包括了以下内容：

获取ContentProvider对象
Server端的Cursor对象
Client端的Cursor对象
CursorWindow


1. 获取ContentProvider对象
通常，我们会使用下面的方式使用ContentProvider获取数据：
mContext.getConten...]]></description><category></category></item><item><title><![CDATA[逻辑思维--笔记]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/101147996</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/101147996</guid><author>Dylan_Sen</author><pubDate>Thu, 19 Dec 2019 22:17:28 +0800</pubDate><description><![CDATA[五种思维模式

MECE/逻辑树
矩阵图
流程图
关系图
假说检验

MECE–Mutually Exclusive, Collectively Exhaustive 相互独立，完全穷尽
想要按逻辑思维得出高精度的结论，就必须着重检查是否有重要因素被遗漏，以及是否存在相同因素的重复。尤其“遗漏”的存在会大幅削弱说服力和解决问题的效果。
例子：

逻辑树实例：

矩阵图
矩阵图分为两类：

表格型
...]]></description><category></category></item><item><title><![CDATA[设计模式小结]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/85326298</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/85326298</guid><author>Dylan_Sen</author><pubDate>Sat, 21 Sep 2019 15:10:18 +0800</pubDate><description><![CDATA[面临的问题：
1.交互对象之间的耦合为后续的维护和扩展带来了不便
2.代码复用
OO基础：

抽象
封装
多态
继承


OO原则：

将变化分离出来，封装变化
多用组合(Has-a)，少用继承(Is-a)
针对接口编程，不针对实现编程
减少交互对象之间的耦合

把&amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;行为&amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;想成&amp;amp;amp;amp;]]></description><category></category></item><item><title><![CDATA[ContactsProvider2]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/100746601</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/100746601</guid><author>Dylan_Sen</author><pubDate>Fri, 13 Sep 2019 13:52:44 +0800</pubDate><description><![CDATA[Android的数据库体系可以分为三个层次：

ContentProvider层；ContentProvider将对数据的增删改查操作进行了抽象，具体实例会注册到AMS中，提供跨进程的服务。ContentProvider可以用于管理各种数据存储源的访问，包括结构化数据（SQLite）和非结构化数据（如图像文件）。
SQLiteDatabase/SQLiteOpenHelper；这部分代码位于“/f...]]></description><category></category></item><item><title><![CDATA[Service]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/81430517</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/81430517</guid><author>Dylan_Sen</author><pubDate>Fri, 29 Mar 2019 23:20:52 +0800</pubDate><description><![CDATA[Service主要在后台执行耗时操作，或者为其他进程提供服务。Service运行在主线程之中，如果要执行耗时操作，还得创建一个线程; 所以如果单单是为了将耗时操作挪出主线程，可以创建线程，如果是想用户不再和app交互时仍可在后台运行可以创建service。

1. Service可以分为三类


Foreground 
前台service是指那些执行可以被用户觉察到操作的service;前台ser...]]></description><category></category></item><item><title><![CDATA[Input event -- InputManagerServie]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/82981226</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/82981226</guid><author>Dylan_Sen</author><pubDate>Tue, 27 Nov 2018 13:59:28 +0800</pubDate><description><![CDATA[SystemServer启动的时候会在startOtherServices方法中创建InputManagerService对象，并以InputManagerService对象为参数调用main@WindowManagerService方法; 另外还会调用addService@ServiceManager方法将这个对象作为“input”系统服务的server端。
main@WindowManager...]]></description><category></category></item><item><title><![CDATA[Input event --- View hierarchy]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/84328284</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/84328284</guid><author>Dylan_Sen</author><pubDate>Tue, 27 Nov 2018 13:54:17 +0800</pubDate><description><![CDATA[输入事件派发第二篇！
输入事件在View hierarchy中的派发。]]></description><category></category></item><item><title><![CDATA[Java language specification 9 笔记]]></title><link>https://blog.youkuaiyun.com/Dylan_Sen/article/details/79849537</link><guid>https://blog.youkuaiyun.com/Dylan_Sen/article/details/79849537</guid><author>Dylan_Sen</author><pubDate>Thu, 27 Sep 2018 14:39:58 +0800</pubDate><description><![CDATA[Java编程语言是强类型的，静态类型的语言; 每个变量或表达式都要在编译时有一个已知的类型。类型限制了变量所能代表的值，限制了表达式所能产生的值，限制了值所能支持的操作，也决定了操作的意义。强类型，静态类型有助于在编译时帮忙检测错误。

Compile time:将程序转化为独立于机器的二进制码。 
Rum time:包括加载、链接程序执行需要的类，生成机器语言(可选)，程序的动态优化以及执行程序...]]></description><category></category></item></channel></rss>