滑动(平移)的实现方式 首先看一下有几种方式可以实现滑动效果,实际也就是平移。 通过layout实现 也可以简单封装成一个方法,实现X轴方向上的平移: 通过offset方法实...
滑动(平移)的实现方式 首先看一下有几种方式可以实现滑动效果,实际也就是平移。 通过layout实现 也可以简单封装成一个方法,实现X轴方向上的平移: 通过offset方法实...
观察者模式 下面写了一个简单例子,实现图片的异步加载。首先实现一个Observer对象,用来接收数据,更新图片内容。onNext方法接收一个Bitmap对象。 然后实现一个O...
Junit Android Studio创建的项目,默认支持Junit测试,我们可以在src/test/目录下看到一个ExampleUnitTest方法。使用方式也比较简单,...
属性动画 属性动画支持在xml文件中定义,便于代码复用。下面先给出一个最简单的ValueAnimator例子。我们需要在res/animator目录下新建一份property...
参考: OkHttp解析(一)从用法看清原理
OKHTTP AsyncTask RecyclerView Parcel 参考: 关于 GlideGoogle推荐——Glide使用详解简单跨进程使用EventBus
Stack Queue 参考: java 中的Stack、Queue、Deque
滑动列表是最常见的UI界面,也常见卡顿问题。今天看下两种列表的使用上面有什么区别。 ListView ListView使用非常简单,但是也容易出现卡顿问题。默认情况下是比较耗...
AIDL Android跨进程通信Binder ContentProvider Android四大组件-ContentProvider Messenger Android跨进...
应用层 应用层使用job,首先创建一个JobService,重写onStartJob和onStopJob方法,如果job需要执行一些比较耗时操作,则可以通过异步的方式实现,在...
冒泡排序 直接选择排序 插入排序 快速排序 参考 算法学习笔记17-经典排序算法八大排序算法稳定性分析
装饰模式 以我们最熟悉的Context为例,它就是一种装饰模式。 我是这样理解的,Context是一个抽象的人,没有具体指谁,ContextImpl是一个裸男,Context...
类加载器 通常情况下,我们都认为有三种系统提供的类加载器: 但是,从虚拟机的角度讲,只有两种不同的类加载器,Bootstrap和其他加载器。因为Bootstrap是完全用C+...
View的刷新 前面学习过,view的刷新过程分为三步,measure,layout和draw。 所以一般的卡顿问题都可以从这三个过程分析,通过systrace查看哪一个流程...
应用层 ContentProvider平时使用比较少,今天大概看一下它的使用和简单原理。通常ContentProvider会结合SQLiteDatabase数据库一起使用。所...
前面介绍全局广播的时候,提到过根据intent的flag不同,广播会被加入到不同的队列中。 前台广播 默认情况下,Intent是不带FLAG_RECEIVER_FOREGRO...
前面介绍过本地广播,今天看一下全局广播的实现。 registerReceiver 我们知道,应用获取到的Context都间接继承了ContextWrapper,所以广播注册的...
getInstance LocalBroadcastManager实现了一个单例模式,每个进程只能获取到一个实例。 为了实现单例,构造函数是私有的。 构造函数传入了Appli...
变量占用的字节 我们都知道基本类型,byte跟boolean是1个字节,short跟char是2个字节,int跟float是4个字节,long跟double是8个字节。 类型...
AMS的CPU负载检测 AMS有一个线程会定时计算每个进程的CPU负载情况 原理比较简单,它通过synchronized同步锁的方式,在while循环中,空闲时通过wait进...