lwenkun

吾生也有涯

Android 事件分发规律总结

Android 事件分发规律总结

Android 事件分发规律总结 定义 事件序列:手指接触屏幕开始到离开屏幕为止产生的事件为一次事件序列。 规律一 从父视图的角度来看,无论他的子视图是 View 还是 ViewGroup,对父视图来说都是透明的。它只知道如果当 ACTION_DOWN 事件传给子视图后子视图的 dispatchTouchEvent () 返回 true,说明子视图想要处理这个事件,那么以后的事件就都交给...

Java 注解学习总结

Java 注解学习总结

Java 注解学习 前言 注解是在 JDk 5 时引入的,注解可以提供一些元数据,它们能为所注解的代码提供一些不属于程序本身的数据,从而可以对程序提供一些辅助功能。这些辅助功能包括编译时检查(错误和警告)、编译时和部署时的代码加工,以及运行时的代码处理。这三种注解分别被称为源码级别的注解(这些注解主要是在编辑代码时为程序员提供错误信息);编译时注解:这种类型的注解一般需要配合注解处理器框架使...

Android 进程启动原理

Android 进程启动原理

Android 进程启动原理 前言 Android 中的应用是支持多进程的,我们只要在 AndroidManifest 中给四大组件指定 android:process 属性即可让其运行在独立的进程当中。那么应用的主进程又是如何被创建的呢?一般来说,当我们的应用没有任何组件处于运行状态,此时其他应用启动我们应用的组件时,应用的主进程就会被创建,进程相当于是提供了组件运行的空间。最常见的触发...

Glide 之磁盘缓存

Glide 之磁盘缓存

Glide 之磁盘缓存 Glide 提供了灵活的磁盘缓存策略,用户可以定义自己的缓存策略,只需要实现 DiskCache 接口即可。Glide 中已经有两个 DiskCache 实现,一个是 DiskCacheWrapper,这个类什么都没干,就是一个空壳,用来包装其他的 DiskCache 实现类;另一个类是 DiskLruCaheWrapper,它是基于 DiskLruCache 实现的...

Glide 源码探究

Glide 源码探究

Glide 源码探究 前言 Glide 是安卓平台上媒体管理和图片加载框架,它内部封装了媒体解码工具、内存和磁盘缓存以及资源池等,并向用户暴露简单易用的接口。我们可以用它来获取、解码、并展示视频、图片和 GIF 动画。如果大家有用过 Picasso 应该知道,Glide 的使用方式和 Picasso 非常相似,甚至很多 API 的名称都一样。但是相比 Picasso,Glide 的功能更加强...

操作系统原理总结

Operating System conclusion

操作系统原理总结 对课本知识的概括和总结,来自《操作系统原理》第四版 —— 庞丽萍著 用户环境 操作系统的生成: 系统生成 根据计算机的硬件配置选择相应的功能模块来组装成一个可利用的操作系统 硬件配置信息可通过从文件读取或者系统程序员 系统初启 引导程序 => 系统核心 => 核心初始化 核心初始化:先建立 0# 进程(永远处于核心态,换页)...

Java 8 方法引用

Method References

Java 8 方法引用 形如 ClassName::methodName 或者 objectName::methodName 的表达式,我们把它叫做方法引用(Method Reference)。可能你现在还理解不了,但是编译器足够聪明,或许你可以看看编译器是如何根据 “晦涩难懂” 的 Method Reference 来推断你的意图的。 方法引用的种类 方法引用有四种,分别是: ...

动态加载应用之简单热更新

动态加载&热更新

动态加载应用之简单热更新 在之前的一片文章中,我和大家分享了安卓动态加载的原理,这篇文章就和大家分享一下动态加载在热更新方面的应用,我会通过一个假想的案例来演示如何在项目利用动态加载实现热更新。 案例 某项目需要对某些数据集进行排序,但由于时间原因,开发团队使用了一个比较基础的算法实现该排序功能。上线之后才发现该排序算法的性能太差,影响了用户体验,因此开发团队不得不对该算法进行优化。优化...

探究 Java 虚拟机栈

Explore JVM Stack

探究 Java 虚拟机栈 前言 Java 虚拟机的内存模型分为两部分:一部分是线程共享的,包括 Java 堆和方法区;另一部分是线程私有的,包括虚拟机栈和本地方法栈,以及程序计数器这一小部分内存。今天我就 Java 虚拟机栈做一些比较浅的探究。 熟悉 Java 的同学应该都知道了,JVM 是基于栈的。但是这个“栈” 具体指的是什么?难道就是虚拟机栈?想要回答这个问题我们先要从虚拟机栈的结构...

Messenger 的工作原理

How does Messenger work

Messenger 的工作原理 我们知道,Handler 是安卓用来进行线程间通信的工具,但是如果涉及到进程间通信呢,可以用 Handler 吗?答案是否定的。因为 Handler 实现的线程共享是基于统一进程的线程共享同一进程空间这一事实的。而不同进程拥有不同的进程空间,所以 Hander 机制不能于进程间通信。别太沮丧,安卓为我们提供了一个 Handler 的变体让我们可以通过和 Ha...