HashMap详解 数据结构JDK1.7之前HashMap采用的数据结构为数组+链表,使用这种结构是为了解决哈希冲突(拉链法)。JDK1.8之后还引入了红黑树,当链表长度达到一个阈值时该链表就会转化为红黑树。 数组元素和链表结点JDK1.7之前为Entry,JDK1.8为Node,两者只是名称不同。 Entry(或Node)中存放着键值对、键的哈希值,并且指向下一个结点。 123456789101112131415 2019-02-04 Data Structure HashMap
Android触摸事件分发机制 为什么要进行事件分发android中View是树形结构的,view可能会重叠,当我们点击某个区域时,如下图中的View,由于Activity、ViewGroupA、ViewGroupB和View都能对触摸事件进行响应,系统无法确定该事件交由谁处理,这就需要事件分发机制来帮忙。 什么是触摸事件官方文档中的描述: Motion events describe movements in 2018-12-15 Android Basics Touch Event
View的绘制流程 ViewRoot和DecorViewRoot对应与VieRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程(Measure、Layout和Draw)均是通过ViewRoot来完成的。在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将ViewR 2018-12-10 Android Basics View
AsyncTask源码详解 基础知识CallableCallable的接口定义如下: 123public interface Callable { V call() throws Exception;} Callable接口声明了一个名称为call()的方法,该方法可以有返回值V,也可以抛出异常。Callable也是一个线程接口,它与Runnable的主要区别就是Callable 2018-11-04 Android Basics AsyncTask
Handler机制基本原理 定义由于Android本身是线程不安全的,为了解决多线程并发的问题,Android提供了一套原生异步消息处理机制——Handler机制。Handler机制主要涉及到四个类:Handler、Looper、Message和MessageQueue。 使用方法创建Handler对象方式一:在主线程中创建Handler对象,并重写其handMessage方法。 123456789101112priva 2018-10-29 Android Basics Handler
Fragment进阶使用技巧 内存重启当App运行在后台,系统由于资源紧张把App杀死回收,此时App从后台切回前台会产生重启现象,我们把这种情况称为“内存重启”。另外,屏幕旋转等配置变化也会造成当前Activity重启,本质与“内存重启”类似。 在系统要把app回收之前,系统会把Activity的状态保存下来,Activity的FragmentManager负责把Activity中的Fragment保存起来。在“内存重启”后 2018-09-28 Android Basics Fragment