- 博客(24)
- 收藏
- 关注
原创 ReentrantLock源码
结构类图构造方法//java.util.concurrent.locks.ReentrantLock//默认非公平锁public ReentrantLock() { sync = new NonfairSync(); } public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync(); }//执行lo.
2021-09-24 18:58:14 118
原创 Android UI绘制原理(一)——Activity、Window、ViewRootImpl基本关系
代码路径/frameworks/base/core/java/android/app/ActivityThread.java/frameworks/base/core/java/android/app/Activity.java/frameworks/base/core/java/android/view/Window.java/frameworks/base/core/java/android/view/WindowManagerImpl.java/frameworks/base/co
2021-08-24 17:49:59 272
原创 Android系统启动(三)——SystemServer
继续分析SystemServer基于Android Oreo 8涉及代码位置/frameworks/base/services/java/com/android/server/SystemServer.java/frameworks/base/core/java/android/app/ActivityThread.java/frameworks/base/core/java/android/app/ActivityManager.java/frameworks/base/servi
2021-08-10 10:54:24 396
原创 Android系统启动(二)——Zygote启动
上一篇讲到了init启动Zygote的过程,这次分析Zygote涉及类/frameworks/base/cmds/app_process/Android.mk/frameworks/base/cmds/app_process/app_main.cpp/frameworks/base/core/jni/AndroidRuntime.cpp/frameworks/base/core/java/com/android/internal/os/ZygoteInit.java/framewor
2021-08-04 17:45:49 939
原创 Android init与zygote启动
init是Android用户空间启动的第一个进程。代码基于Android 8涉及类路径/system/core/init/init.cpp/system/core/rootdir/init.rc/system/core/init/init_parser.cpp/system/core/init/action.cpp/system/core/init/keyword_map.h/system/core/init/service.cpp/system/core/rootdi.
2021-07-30 17:39:42 588 2
原创 Activity启动流程
基于Android 28先看整体时序图,省略了一部分不重要的部分,保留了关键部分。蓝色是执行启动Acitivity的进程,粉色是AMS所在的进程,深红是最终启动的Activity进程。启动@Override public void startActivity(Intent intent) { this.startActivity(intent, null); }一路往下调最终是public void startActivityForResul.
2021-07-26 18:46:03 381 1
原创 Handler源码
从Handler入手public Handler() { this(null, false); }public Handler(Callback callback, boolean async) { if (FIND_POTENTIAL_LEAKS) { final Class<? extends Handler> klass = getClass(); if ((klass.isAnonymou
2021-07-12 17:16:23 90
原创 ThreadLocal源码分析
//使用泛型public class ThreadLocal<T> {//空实现public ThreadLocal() { }public void set(T value) { Thread t = Thread.currentThread(); //ThreadLocalMap是核心对象 ThreadLocalMap map = getMap(t); //为空则创建,否则设置value .
2021-07-06 12:02:15 80
原创 setContentView流程
AppCompatActivity的方法实际是调用先获取AppCompatDelegate委托类,最终调用AppCompatDelegateImplV9,只分析最常用的方法:所有方法都用到了ensureSubDecorprivate void ensureSubDecor() { if (!mSubDecorInstalled) {//确保执行一次 mSubDecor = createSubDecor(); // If a title was set.
2021-06-23 17:56:09 205 2
转载 在Android Studio中进行单元测试和UI测试
本文基于TestDevTalk的文章,原文是基于AS旧版本的,现基于最新AS 2.1.3 功能进行了一些修改。
2016-09-04 11:03:33 441
原创 Android调试利器--Stetho
也许你已经习惯了使用Fiddle或者Charles来抓取网络包,使用各种插件和工具查看sqlite数据库,但是现在有了更好的调试工具,为什么不尝试一把提高效率呢?Stetho是一个复杂的Android应用程序调试桥。启用时,开发者可以通过Chrome桌面浏览器调试App。开发人员也可以选择启用dumpapp工具,一个强大的命令行界面应用程序内部构件。
2016-07-02 22:19:35 585
原创 Android逆向工程(一)-Apktool使用
当我们辛辛苦苦写的代码被别人抄走的时候一定会让我们非常的抓狂。要学会防守,我们也需要知道别人进攻的方式,接下来我们学习下如何破解Apk。Apktool是家喻户晓的逆向工具,我们学习下如何使用它。
2016-06-14 22:05:29 5659 3
原创 Android设计模式-建造者模式
建造者模式顾名思义,假如我们需要建一个房子,但是我们不会建房子,所以我们找来一个包工头他是指导者(Director),包工头负责指挥工人具体建造者(Concrete Builder),工人按照图纸(建造者Builder即一个抽象接口),有的负责打地基,有的和泥,有的搬砖···,最后盖完一个房子(产品 Product)。你得到了房子,并不需要了解房子怎么盖。
2016-06-07 15:30:34 415
原创 Android设计模式-单例模式
一个优秀的程序员,决不能只能仅仅满足于实现了功能。如何实现功能的同时,写出漂亮的、好维护的代码也是菜鸟到进阶的必修课。很多刚刚入门的程序员会抱着设计模式的教材当做武林秘籍,其实设计模式并没有那么高深,当你为了实现功能,或者产品经理反复的修改需求,又或者因为工期太紧了你打算先写出来东西有空再重构。。。最后当你面对着一大堆烂代码发愁怎么重构的时候,设计模式应该就能帮上你的大忙。
2016-06-06 22:17:09 294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人