![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 59
Violet_2333
android
展开
-
Android秒级免安装增量编译方案
由于工作中开发的Android项目比较大,编译瞬间比较长,就算是二次编译,也要好几分钟,其他插件又不能很好的适配我的项目,所以就自己做了一个增量编译的插件,设计实现上是尽可能简单,减少维护成本,有需要的同学可以参考,尝试接入自己的项目项目地址一、原理增量编译Java原理:Android ClassLoader的findClass会从ClassLoader.pathList.dexElements[]数组里面按顺序查找dex加载class,所以可以Hook了ClassLoader.pathList.原创 2021-11-27 19:23:50 · 269 阅读 · 0 评论 -
Android网易云鲸云音效UI
之前看过别人实现了网易云的音效UI,我也实现了一下,以下是示意图源码:https://github.com/WYJ0663/MusicEffect.git原创 2019-08-12 20:07:57 · 614 阅读 · 0 评论 -
android 彩带动画,粒子动画
项目地址demo mImageView = (ImageView) findViewById(R.id.iamge); final RibbonDrawable drawable = new RibbonDrawable(this); RibbonConfig config = new RibbonConfig() .setC...原创 2019-08-04 18:39:49 · 891 阅读 · 0 评论 -
Android sqlit java层源码分析
【1.1】打开数据库我们一般回调用SQLiteOpenHelper的getWritableDatabase,getReadableDatabase来打开一个可写或者只读数据库,其实都是通过getDatabaseLocked来实现,writable值不同而已,源码分析如下 private SQLiteDatabase getDatabaseLocked(boolean writable)...原创 2018-06-18 17:52:59 · 265 阅读 · 0 评论 -
getDrawable()缓存带来的问题
我们经常通过getContext().getResources().getDrawable()来获取一个问题,当因为Android机制使用了缓存机制,直接setColorFilter()修改颜色,可能同时也会改变其他getDrawable()的颜色。我们先来看一下getDrawable()的源码吧。 public Drawable getDrawable(int id, @Nulla...原创 2018-06-02 14:49:10 · 1740 阅读 · 0 评论 -
EventBus2.2源码分析
由于我们项目使用了EventBus2,所以查看一下源码,了解一下原理关键的event缓存数据结构 // 订阅方法,按event类型归类 private final Map<Class<?>, CopyOnWriteArrayList<Subscription>> subscriptionsByEventType; // ...原创 2018-06-02 13:18:41 · 260 阅读 · 0 评论 -
Java线程池原理分析
【1.0】 Executors类提供了几种不同特性的线程池,其主要实现类都离不开ThreadPoolExecutor,先看一下ThreadPoolExecutor的构建方法public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, ...原创 2018-06-02 13:09:22 · 111 阅读 · 0 评论 -
startActivity启动过程
代码来自Android 7.1.1版本,简单分析startActivity的启动过程【1.1】 启动Activity,最终都会调到startActivityForResult,requestCode默认-1,options默认null //Activity.java public void startActivityForResult(@RequiresPermis...原创 2018-06-02 13:08:29 · 316 阅读 · 0 评论 -
Android Handler 机制
Handler机制是Andrdoid中很常用的线程任务控制,Handler类负责信息传送和分发执行,Looper是控制Message中心,MessageQueue保持和提供Message。1、Message顺便提一下Message.obtain(),Message会维护一个信息池,以单列表结构存储,使用它可以减少对象的创建,节省内存,代码如下 //池默认长度是MAX_POOL_...原创 2018-06-02 13:07:51 · 80 阅读 · 0 评论 -
Android特有的数据结构分析
android为了减少内存的使用和装箱拆箱损耗的性能,提供一些特有的数据接口,在 android.util包下面,都是使用数据进行保存,适当的使用这些对象可以优化我们的应用ArrayMapArraySetSparseArraySparseIntArraySparseBooleanArraySparseLongArrayArrayMap可代替Map//保存hashint[...原创 2018-06-02 13:06:32 · 1126 阅读 · 0 评论