Android源码学习
文章平均质量分 83
哈特谢普苏特
海上生明月
展开
-
WorkManger学习汇总
WorkManager源码原创 2023-11-04 21:46:55 · 323 阅读 · 0 评论 -
DataBinding学习记录
DataBinding的实质其实也是APT技术,DataBinding是MVVM架构中出现的。想要使用DataBinding,首先需要在在build.gradle(app)中加入以下这句话,如下图所示 dataBinding { enabled = true // versio n = 1.1 // 可选,建议最好不加,使用Gradle插件默认的版本 }然后在需要使用DataBinding的布局中通过<data>标签的方式管理布局和原创 2022-04-09 23:27:40 · 2755 阅读 · 0 评论 -
Some Kotlin libraries attached to this project were compiled with a newer Kotlin终极解决方法有手就会
Some Kotlin libraries attached to this project were compiled with a newer Kotlin compiler and can‘t 报错看了网上的解决方法,都不行,包括删除.gradle重新下载依旧报错记录一下,有好心人也可以告诉我答案原创 2022-04-09 18:47:52 · 5841 阅读 · 1 评论 -
View绘制流程分析
setContentView()做了什么我们知道在onCreate()方法中setContentView()方法是将xml文件解析到DecorView上,那么DecorView又是什么时候显示在屏幕上的呢?我们都知道activity的生命周期中onResume()做了很多工作,而onResume()的调用如上图所示。在ActivityThread中,handleResumeActivity()方法不光调用了performActivity()方法最终实现对onResume()方法的调用,还进行了以原创 2022-02-15 10:26:24 · 1192 阅读 · 0 评论 -
setContentView()做了什么事情?
setContentView()做了什么事情原创 2022-02-09 23:14:06 · 1781 阅读 · 1 评论 -
Java双亲委派机制在Android的应用
Java的双亲委派机制三层类加载器1.启动类加载器(Bootstrap Class Loader) 这个类加载器负责加载存放在<JAVA_HOME>\lib目录,或者被-Xbootclasspath参数所指定的路径中存放的,而且是Java虚拟机能够 识别的(按照文件名识别,如rt.jar、tools.jar,名字不符合的类库即使放在lib目录中也不会被加载)类 库加载到虚拟机的内存中。启动类加载器无法被Java程序直接引用,用户在编写自定义类加载器时, 如果需要把加载请求委派给引导类加载原创 2022-01-25 17:04:39 · 1742 阅读 · 0 评论 -
Android进阶之光学习记录——注解与依赖注入框架ButterKnife的尝试
⚠️创建的模块是java模块而非Android Library,如果创建的是后者,则无法使用AbstractProcessor原创 2021-12-26 22:45:08 · 1475 阅读 · 0 评论 -
Activity启动过程——10.0源码分析
安卓10 activity启动流程分析原创 2021-12-23 17:30:59 · 2146 阅读 · 0 评论 -
HandlerThread源码学习记录
HandlerThread 实质上是一个带有Looper的handler,我们在使用的时候通过mThread = new HandlerThread("handler_thread");需要启动handlerThread的时候mThread.start();代码很短 HandlerThread继承了Thread,也就是说可以通过HandlerThread的方式开启一个线程,当.执行start()方法后,会在新开启的线程中直接执行run()函数,其中run函数中首先通过Loppe.原创 2020-09-08 19:44:54 · 132 阅读 · 0 评论 -
Android消息机制总结 Handler Looper MessageQueue Message
Handler Looper MessageQueue 以及Message是一个整体。如果线程之间需要发送消息,最常见的方式就是使用Handler。如子线程想要给主线程发送消息,则主线程中创建Handler 并重写handleMessage()的方法,子线程中通过sendMessage的方法传递消息。如果主线程想要给子线程发送消息,则需要在子线程中创建Looper,(Looper.prepare() ...Looper.loop())的方式完成。主线程中自带Looper,不需要我们手动创建。一个线程原创 2020-09-06 16:22:50 · 164 阅读 · 0 评论