Android
文章平均质量分 90
xiexie_lovely
这个作者很懒,什么都没留下…
展开
-
blockCanary原理
blockCanary对于android里面的性能优化,最主要的问题就是UI线程的阻塞导致的,对于如何准确的计算UI的绘制所耗费的时间,是非常有必要的,blockCanary是基于这个需求出现的,同样的,也是基于LeakCanary,和LeakCanary有着显示页面和堆栈信息。使用首先在gradle引入implementation 'com.github.markzhai:blockca...原创 2018-11-21 10:25:59 · 716 阅读 · 0 评论 -
HashMap及其并发的一些理解
#HashMap及其并发的一些理解HashMap在jdk1.8之前,HashMap通过数组加链表的方式实现。在1.8之后,在链表长度大于8之后,会将链表转化为红黑树进行存储。基本元素Node和EntryEntry表示链表的每一个节点的元素,就是key和value的包装对象。Map是一个接口,实现类为Node static class Node<K,V> implements...原创 2018-11-17 17:44:52 · 264 阅读 · 0 评论 -
LeakCanary详解
LeakCanary简介leakCanary是square公司推出的一个用于检测内存泄漏的工具,在一个activity完全ondestroy方法执行时,我们都会希望它的内存空间能够完全被回收。但是实际上并非是这样的,往往可能会出现内存泄漏,比如说这个activity被其他没有回收的类所持有引用。那么就会造成ondestory方法执行完之后,这个activity没有被回收,造成内存泄漏。所以,为了...原创 2018-11-19 22:47:38 · 361 阅读 · 0 评论 -
rxjava使用原理
rxjava简单使用其实rxjava入门并没有想象中的难,常用的简单方法就几个。我们来看一个最简单的例子Observable.create(new ObservableOnSubscribe<Integer>() { @Override public void subscribe(ObservableEmitter<Integ...原创 2018-11-22 11:21:57 · 260 阅读 · 0 评论 -
Executor的简单了解
线程池 Executor成员Executor: 是一个接口,它是Executor框架的基础,它将任务的提交和执行分离开public interface Executor { void execute(Runnable command);}这个execute方法就行执行任务的方法。ExcutorService:这个Service是个接口,ThreadPoolExecuto...原创 2018-11-21 17:33:07 · 504 阅读 · 0 评论 -
Android processor的一次尝试
关于Adnroid processorLovelyInject项目地址:https://github.com/xiejinlong/LovelyInject这个是一个基于https://github.com/enbandari/TieGuanYin库实现的一个简易版的intent注入框架。使用流程使用注解可以使用的有3个注解,BuilderActivity,BuilderFragmen...原创 2018-11-16 20:29:48 · 751 阅读 · 0 评论 -
一个简单Mvp框架推荐
android中的各种框架在主流的开发框架中,目前比较流行的框架有MVC,MVP,MVVM框架。MVCMVC框架算是比较常见的一种开发框架了,即模型-视图-控制器,model用来存储数据,view来做界面的显示与绘制,控制器用来处理逻辑,处理Model和View之间的交互,当然view和model之间还有交互,view可以直接从model类存取数据,model也能够直接改变view的显示。...原创 2018-11-16 20:28:52 · 499 阅读 · 0 评论 -
java锁实现
锁的对比java中的锁一共有4种状态,级别从低到高分别是:无锁状态偏向锁轻量级锁重量级锁锁只能升级,不能降级偏向锁顾名思义,为了让线程获得锁的代价更低,引入了偏向锁。加锁当一个线程访问同步块并且获取锁时,会在对象头和栈帧中的锁记录里存储锁偏向的线程id,这样,这个线程便获取了这个对象的偏向锁,之后这个线程进入和退出就不需要通过CAS操作,也就是原子操作,来进行加锁和解锁,只...原创 2018-11-16 20:28:03 · 200 阅读 · 0 评论 -
撸Retrofit源码
Retrofit简单使用下面的是官网的例子://1、首先配置出一个retrofitRetrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com/") .build();//2、定义一个网络请求的接口public interface GitHubService { @GET("us...原创 2018-11-16 20:27:16 · 173 阅读 · 0 评论 -
撸OkHttp源码
okHttp概述上一篇文章讲到retrofit网络请求框架,其实retrofit内部并没有真正的实现网络请求,它内部将网络请求封装成了Call,并将网络请求转角给okhttp去执行。okhttp是square开源的一个网络库,将每一个网络请求都封装成一个call,然后利用call去执行网络请求。下面是官方给的例子:OkHttpClient client = new OkHttpClient...原创 2018-11-16 20:26:00 · 417 阅读 · 0 评论 -
Program type already present: javax.annotation.*的一次解决
##问题最近在引用stetho这个第三方库时,编译时一直报错。错误如下* What went wrong:Execution failed for task ':Kuaikan:transformClassesWithMultidexlistForDebug'.> com.android.build.api.transform.TransformException: Error wh...原创 2018-11-25 10:49:11 · 1609 阅读 · 0 评论