自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 130

原创 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 297

原创 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 414

原创 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 968

原创 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 628 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 417 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 96

原创 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 84

原创 setContentView流程

AppCompatActivity的方法实际是调用先获取AppCompatDelegate委托类,最终调用AppCompatDelegateImplV9,只分析最常用的方法:所有方法都用到了ensureSubDecorprivate void ensureSubDecor() { if (!mSubDecorInstalled) {//确保执行一次 mSubDecor = createSubDecor(); // If a title was set.

2021-06-23 17:56:09 226 2

转载 在Android Studio中进行单元测试和UI测试

本文基于TestDevTalk的文章,原文是基于AS旧版本的,现基于最新AS 2.1.3 功能进行了一些修改。

2016-09-04 11:03:33 460

原创 Android调试利器--Stetho

也许你已经习惯了使用Fiddle或者Charles来抓取网络包,使用各种插件和工具查看sqlite数据库,但是现在有了更好的调试工具,为什么不尝试一把提高效率呢?Stetho是一个复杂的Android应用程序调试桥。启用时,开发者可以通过Chrome桌面浏览器调试App。开发人员也可以选择启用dumpapp工具,一个强大的命令行界面应用程序内部构件。

2016-07-02 22:19:35 589

原创 Android逆向工程(一)-Apktool使用

当我们辛辛苦苦写的代码被别人抄走的时候一定会让我们非常的抓狂。要学会防守,我们也需要知道别人进攻的方式,接下来我们学习下如何破解Apk。Apktool是家喻户晓的逆向工具,我们学习下如何使用它。

2016-06-14 22:05:29 5715 3

原创 Android设计模式-模板方法模式

Android设计模式-模板方法模式

2016-06-12 23:37:08 281

原创 Android设计模式-建造者模式

建造者模式顾名思义,假如我们需要建一个房子,但是我们不会建房子,所以我们找来一个包工头他是指导者(Director),包工头负责指挥工人具体建造者(Concrete Builder),工人按照图纸(建造者Builder即一个抽象接口),有的负责打地基,有的和泥,有的搬砖···,最后盖完一个房子(产品 Product)。你得到了房子,并不需要了解房子怎么盖。

2016-06-07 15:30:34 420

原创 Android设计模式-单例模式

一个优秀的程序员,决不能只能仅仅满足于实现了功能。如何实现功能的同时,写出漂亮的、好维护的代码也是菜鸟到进阶的必修课。很多刚刚入门的程序员会抱着设计模式的教材当做武林秘籍,其实设计模式并没有那么高深,当你为了实现功能,或者产品经理反复的修改需求,又或者因为工期太紧了你打算先写出来东西有空再重构。。。最后当你面对着一大堆烂代码发愁怎么重构的时候,设计模式应该就能帮上你的大忙。

2016-06-06 22:17:09 296

原创 Android加载图片你必须知道的技巧

Android加载图片你必须知道的技巧

2016-05-31 14:35:14 6657 1

原创 利用代码扫描工具提升Android代码健壮性

Android代码健壮性

2016-05-30 21:43:27 2461 3

原创 Android 最佳性能实践之内存管理(二)

Android 最佳性能实践之内存管理

2016-05-29 21:22:11 475

翻译 Android 最佳性能实践之内存管理(一)

Android 性能优化

2016-05-29 10:57:12 491

原创 Android UI性能优化(三)

Android性能优化

2016-05-28 13:57:56 430

原创 mipmap 和 drawable 区别与误区

mipmap和drawable区别

2016-05-27 14:31:55 7624

原创 Android UI性能优化(二)

Android UI性能优化

2016-05-27 10:44:07 492

原创 Android UI性能优化(一)

Android UI性能优化

2016-05-26 17:10:20 627

原创 Android Studio删除无用的资源文件

android studio

2016-04-04 19:25:59 22143 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除