- 博客(65)
- 收藏
- 关注
原创 博客目录导航
Android 屏幕适配 TipsAndroid 存储目录详解Android .so 文件使用Android 编译版本、support、主题版本那些事Android 状态栏那些事Android 各版本系统适配的一些注意点Android 系统各版本新特性总结实用性能优化(一):布局实用性能优化(二):图片稳定性(一):Native Crash 信号速查稳定性(二):ANR使用 WebView 时需要注意的一些问题Android Studio Gradle 编译加速RecyclerView 与 ListView
2025-10-13 13:19:43
442
原创 多线程并发原理
大多数现代微处理器都会采用将指令乱序执行(out-of-order execution,简称OoOE或OOE)的方法,在条件允许的情况下,直接运行当前有能力立即执行的后续指令,避开获取下一条指令所需数据时造成的等待。编译期:指令重排(编译器),编译器会为了性能而对指令重排,源码上先后的两行,被编译器编译后,可能调换指令顺序,但编译器会基于一套规则做指令重排,有明显依赖的指令不会被随意重排,指令重排不能破坏程序逻辑。
2026-02-03 10:27:22
258
原创 PackageManagerService 简析
2、扫描设备中的几个分区目录下的应用文件,把扫描结果保存到PMS的mPackages中。这记录的是当前系统中的应用状态信息。1、先读取packages.xml文件内容,解析并保存在成员变量mSettings中。3、后面就是对两次的应用状态信息进行:比对、重新调整、扫描特定目录。4、最后将应用信息重新写回packages.xml文件。
2026-01-28 13:53:26
266
原创 Android 线程梳理
ServiceThread:ServiceThread 继承自 HandlerThread ,下面介绍的几个工作线程都是继承自 ServiceThread。PerformanaceCont system_server专有。UEventObserver system_server专有。FileObserver system_server专有。WifiMonitor system_server专有。system_server 包含4个此同名线程。Thread_ 普通线程,包含若干个。
2026-01-17 15:01:49
286
原创 线程池简析
corePoolSize:maximumPoolSize:keepAliveTime:workQueue:threadFactory:handler:任务管理:线程管理:
2026-01-17 14:37:20
574
原创 编译(二):加载器、编译器、链接器
启动类加载器(Bootstrap ClassLoader):扩展类加载器(Extention ClassLoader):应用程序类加载器(Application ClassLoader):用户自定义的类加载器(User ClassLoader):URLClassLoader:PathClassLoader:DexClassLoader:JIT的运行流程:AOT(Ahead Of Time)和JIT(Just In Time)配合:
2026-01-16 10:46:58
569
原创 Android 渲染(一):刷新机制
Android 渲染(一):刷新机制Android 渲染(二):Choreographer、SurfaceFlinger、HWComposer
2025-12-12 10:15:46
198
原创 虚拟机(一):JVM
标记-清除算法:分为标记和清除两个阶段。该算法首先从根集合进行扫描,对存活的对象标记,标记完毕后,再扫描整个空间中未被标记的对象并进行回收。整个过程需要暂停整个程序的全部运行线程,让回收线程以单线程进行工作,过程结束再恢复运行线程。标记-整理算法:标记过程仍然与“标记-清除”算法一样,但不是直接对可回收对象进行清理。该算法在回收期间会同时将保留下来的对象移动聚集到连续的内存空间,从而避免内存空间碎片。但对象的移动是需要时间成本的。
2025-12-10 13:10:25
414
原创 编译(一):基础知识
传统机器层:编程语言主要是CPU指令集(机器指令),和硬件是直接相关的,程序员所用机器指令编写的程序可以交由微程序直接进行解析,而这里提到的指令集,存储在CPU内部,对CPU的运算进行指导和优化,拥有指令集,CPU就可以有效地运行。我们知道,CPU的制造商分为AMD和Intel两大阵营,那么这两大厂商生产的CPU最大的区别是——指令集不同,Intel的CPU所使用的指令集不适合AMD的CPU,同样的,AMD的CPU所使用的指令集也不适合Intel。由此可见,操作系统是在软件和硬件之间的适配层。
2025-11-26 11:32:24
444
原创 Hook 手段总结
字节码:Java:C:PLT (Procedure Linkage Table) GOT(Global Offset Table) Hook:Inline Hook:LD_PRELOAD:
2025-11-26 11:30:30
282
原创 WindowManagerService 简析
子窗口(1000~1999): 必须依附于一个父窗口。Dialog在Activity不可见的时候,要主动dismiss掉,否则会因为appToken为空crash。系统窗口(2000~2999): 拥有最高的Z-order,例如状态栏、导航栏、Toast、输入法窗口、系统音量条窗口、系统错误窗口等,可以覆盖在所有应用窗口之上。自由模式:类似于桌面操作系统,应用界面的窗口可以自由拖动和修改大小。分屏模式:将屏幕一分为二,同时显示两个应用的界面。画中画模式:窗口可以一直在最顶层显示。
2025-10-29 11:20:38
568
原创 ActivityManagerService 简析
> ActivityManagerService:服务器。= ApplicationThreadProxy:服务器。客户端:ActivityManagerProxy =客户端:ApplicationThread <=
2025-10-29 11:00:23
1002
原创 Android 屏幕适配 Tips
9 图片只能拉伸不能压缩,压缩会导致图片变形,因此在作图过程中要确定一下图片的最小尺寸,(比如,给出一个确定高度的矩形区域,里面放置一个初始高度大于矩形的 .9 图片,会导致图片压缩)。标注图片时,如果一个 icon 占满整个宽度,则可以不用标注icon宽度尺寸,只需要标注距离边框的尺寸,开发会采用自适应,如果确定宽度,在有的屏幕上只能占据一半宽度,如果包的大小太大时,尽量保证更高尺寸的图片存在,这样低屏幕密度的手机也能展现很清晰的图片,但是如果只有小图,就会放大拉伸,会导致图片变形或者不清晰。
2025-03-07 09:59:36
588
1
原创 反编译 APK
只是需要 app 中的图片资源,可以直接修改 xxx.apk的后缀为 xxx.zip,解压即可。apktool:执行 apktool d xxx.apk 命令。
2025-02-17 14:26:14
293
原创 View 触摸机制(事件分发)
主要由三个重要的方法共同完成的,只有ViewGroup有拦截方法。View事件方法执行顺序:onTouchListener > onTouchEvent > onLongClickListener > onClickListener。传递过程:Activity->Window->PhoneWindow->DecorView->RootView->ViewGroup->View。Input事件:触摸事件(Down、Up、Move);Key 事件(Home Key 、 Back Key)
2024-10-30 17:42:28
1150
原创 RecyclerView VS ListView
RecyclerView.ItemDecoration 给每一项Item视图添加子View,例如可以进行画分隔线之类。RecyclerView.ItemAnimator 负责处理数据添加或者删除时候的动画效果。RecyclerView.LayoutManager 负责Item视图的布局的显示管理。RecyclerView.ViewHolder 承载Item视图的子布局。RecyclerView.Adapter 为每一项Item创建视图。Recycler 缓存机制。
2024-04-05 16:35:48
463
原创 开发环境搭建(二):IDE 配置
安装Genymotion与Genymotion插件之后,并与之关联。如需安装SVN,在安装SVN时需要勾选安装命令工具。修改注释位置,禁用“语句堆一行”修改文件编码为UTF-8。禁止自动打开上次的工程。
2020-04-13 20:44:40
449
原创 realm-js chrome debug 报错解决方案
failed to execute ‘send’ on ‘xmlhttprequest’方案一:修改node_modules/realm/lib/browser/rpc.jsif (global.__debug__) { let request = global.__debug__.require('sync-request'); let response = request(...
2019-01-24 13:24:43
728
1
原创 Android 编译版本、support、主题版本那些事
compileSdkVersion, minSdkVersion , targetSdkVersioncompileSdkVersion:编译版本,控制可以使用哪些 API 。不会被包含到 APK 中minSdkVersion :最低兼容版本targetSdkVersion:应用运行时使用的版本,即使使用了高版本API也不会生效合理的关系 minSdkVersion <= targ...
2018-09-29 16:49:04
1478
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅