Android-每日一问
天元!突破
人人有功练!!!
展开
-
图解 RecyclerView 的缓存机制
以后会尽量写非源码的东西,因为过一段时间之后,发现自己看自己的文章都费劲,而且,源码大部分是在分析方法的调用链,意义不大,需要多写写自己的体悟才行。如果有时候必须要写,也要简化调用链的分析,提供类图,写重点和结论。本文的思路与结论是基于参考文档的Anatomy of RecyclerView: a Search for a ViewHolder与 Anatomy of RecyclerVi...原创 2019-05-10 15:35:12 · 2161 阅读 · 5 评论 -
Apk 打包流程及扩展
CSDN 越来越垃圾了,连 Github 的图都转存不了。图裂了请看,我的 Github 地址 : https://github.com/aprz512/blog4aprz512/blob/master/Blog/Android-每日一问/Apk打包流程.md我们开发一个应用,大概会有这些东西:源代码三方库图片,so等一些资源那我们从源文件说起,一个项目的源文件一般都是...原创 2019-08-05 19:28:52 · 205 阅读 · 0 评论 -
ViewGroup 的 generateLayoutParams 方法的作用
不知道大家在编写布局的时候有没有这样的疑问:在 RelativeLayout 布局里面可以对子控件使用 layout_alignParentRight 等属性,但是在 FrameLayout 或者 LinearLayout 中就没有,这是为什么呢? <RelativeLayout android:layout_width="match_parent" ...原创 2019-07-22 18:07:53 · 368 阅读 · 1 评论 -
Gradle Transform API :直接修改 class 文件
首先,我要说的是,我没想到写这篇文章会遇到那么多的难点。其次在写这篇文章的时候,我还是处于一个半吊子的状态,但是我想应该还是会比现有的大部分blog要好的多。我几乎将Google到的索引到的前几页文章全部看了一遍,但是大部分都是相同的内容,就只有一篇我印象比较深,写的比较全面,但是我仍然还有很多疑问。下面的文章我会提出我自己在学习这个知识点时想要问的问题,有些问题我可以自己解答,但是有些还是摸棱...原创 2019-07-22 16:00:42 · 1279 阅读 · 0 评论 -
Annotation Processor: 自定义注解处理器,不再写烦人的模板代码
注解处理在 Java 1.5 的时候就已经发布了,虽然它很老了,但是却是最强大的 API 之一。下面我们会先讨论注解处理,代码自动生成以及使用到这些技术的开源库。什么是注解实际上,我们应该都知道什么是注解。我们经常使用到的:@Override,@Singleton,@StringRes 等等,这些就是注解。注解是一种可以添加到Java源代码的语法元数据。 我们可以注释类,接口,方法,变量,参...原创 2019-07-16 22:55:43 · 1416 阅读 · 0 评论 -
DataBinding 原理分析
DataBinding 是一个支持库,它可以将布局中的界面组件绑定到数据源上,做到UI与数据的单项或者双向监听。说白一点就是数据发生变化可以直接反映到界面上,不用再次手动操作了。当然它的作用远远不止于此,本文从这个点入手,来略微深入一下它的实现过程。首先,DataBinding可以将数据的变化反应到UI上,实际上就是帮助我们更新UI,那么它肯定需要持有(直接或者间接)UI的引用,不然的话,是没法...原创 2019-07-12 15:18:17 · 2388 阅读 · 0 评论 -
Java final 关键字
final 关键字一般会多用于这样的几个地方:变量当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切值,则编译器会把它当做编译期常量使用。防止被重写比如:java.lang.String 类内部类访问外部局部变量这个我们经常使用,而且IDE也会提示你。但是你有没有想过Java为什么要设计成这样,这其中的秘密何在?比如,我们有这样的代码: ...原创 2019-07-08 17:35:59 · 140 阅读 · 0 评论 -
Intent 数据传输限制
当我们启动一个Activity的时候,这个过程是需要与AMS进行进程之间通信的。启动 Activity 的时候,需要使用Intent,所以我们在intent中携带的数据也要从APP进程传输到AMS进程,再由AMS进程传输到目标Activity所在进程。通过阅读 Activity 的启动过程,我们知道app与AMS 的进程通信是使用Binder来完成的,看一张图:普通的由Zygote孵化而来...原创 2019-05-30 17:46:20 · 355 阅读 · 0 评论 -
MultiDex
出现的原因单个Dex文件中,method个数采用使用原生类型short来索引,即2个字节最多65536个method,field、class的个数也均有此限制。对于Dex文件,则是将工程所需全部class文件合并且压缩到一个DEX文件期间,也就是使用Dex工具将class文件转化为Dex文件的过程中, 单个Dex文件可被引用的方法总数(自己开发的代码以及所引用的Android框架、类库的代码)...原创 2019-05-30 17:06:46 · 804 阅读 · 0 评论 -
Android 应用是如何编译与运行的
Android Studio 负责如何构建与部署我们的应用。但是你有没有想过当你按下Run按钮时发生了什么?构建Java compilation我们的代码是用Java编写的。但是,Java代码的编译和运行方式与Web应用程序相同吗?Android应用程序的编译过程与其他Java应用程序有很大不同。但是它们的开始过程都是一样的:使用javac命令将Java源代码文件编译为.class文件...原创 2019-05-30 16:59:19 · 1913 阅读 · 0 评论 -
CompletableFuture 的使用
遇到这样的一个问题:写一个任务控制器,支持添加多个任务异步执行,任务间可以设置依赖,没有依赖的任务并行,有依赖的串行。我刚开始一想,发现这个不是很简单么,写了包装类包装一下 Runnable,然后给它加一个添加依赖的功能不就好了么。后来发现没有我想的这么简单,首先循环依赖没有解决,这个问题这里就不深入了,就假设它没有循环依赖。有了这个假设作为前提,我写出了第一版代码:class Task(...原创 2019-08-05 20:50:23 · 230 阅读 · 0 评论