Android
Android 干货
无猫皆笼
写有用的文章,创造价值。
展开
-
javap 反编译探寻内部类为何能访问外部私有成员
Java语言理论告诉我们内部类对象持有外部类对象的一个引用,这说明内部类与外部类还是独立的两个类,只不过内部类对象通过持有外部类的对象的引用来维持这个关系。通常任何一个类都不可能访问另一个类的私有成员,那么内部类是如何做到访问外部类的私有成员的呢?其实“持有外部类对象的一个引用”这句话已经给了我们提示,Java代码中并不需要自己去声明这么一个引用,因此是编译器背着我们创建了这个引用。既然编译器...原创 2019-09-06 14:47:48 · 239 阅读 · 1 评论 -
Unity 与 Android 互调用
Unity 项目中一些需要访问安卓操作系统的功能,比如获取电量,wifi 状态等,需要 Unity 启动安卓系统的 BroadcastReceiver 监听状态,并在状态更新后通知到 Unity 界面。这就需要一种 Unity 与 Android 互相调用的机制,直观地看就是 C# 与 Java 互相调用的方法。有 Unity 与 Android 互相调用需求的项目需要在两个开发环境中同时进行,...原创 2019-09-06 14:51:12 · 732 阅读 · 0 评论 -
IntentService 介绍和源码分析
IntentService 是系统提供的一种 Service,它用 Intent 传递数据,用子线程执行代码。使用时需要继承 IntentService,自定义 Intent 中携带的数据格式以及对应的执行代码,外部调用时需要按照格式定义 Intent 数据并启动服务。什么时候用Service 作为四大组件之一,用来实现与 UI 无关的功能,但 Service 各个生命周期的方法仍然运行在 U...原创 2019-09-06 15:52:16 · 227 阅读 · 0 评论 -
LruCache 内存缓存
什么是 LruCache是一种内存缓存对象,使用 LRU(Least Recent Used)算法管理缓存。缓存是空间换时间的一种策略,将低速设备上的数据保存一部分到高速设备上,从而提高整个系统长期运行时的平均读取速度。通常高速设备的空间较小,低速设备的空间较大,也就是说缓存的空间总是不可能覆盖数据全集,需要有缓存数据交换的策略。而缓存算法实现的就是缓存如何交换的细节。LRU 算法,Leas...原创 2019-09-06 17:43:00 · 544 阅读 · 0 评论 -
DiskLruCache 文件缓存
什么是 DiskLruCache是文件缓存的管理对象,使用 LRU 算法对保存在永久存储设备上的缓存文件进行管理。比手机的闪存更低速的访问设备是网络,文件缓存的意义就在于通过重复利用缓存的数据,减少网络请求,减少网络流量,提高响应速度。用法使用静态方法 static DiskLruCache open(File directory, int appVersion, int valueCo...原创 2019-09-09 09:11:57 · 1421 阅读 · 0 评论 -
ButterKnife 写给一知半解的同学
ButterKnife GitHub 2019 年已经更新到 10.1.0 版本了,经过几天的学习和网上搜索资料,发现之前版本的一些疑难杂症已经不存在或者有些改善。刚开始用是非常爽的,如果真的要应用在项目中,有如下建议:一个 module 撸到底的项目,直接用吧,没啥坑,都挺好。大项目组件化的项目,可以尝试。低版本据搜索有很多坑,我在 10.1.0 版本实验了一下,配置得当没有问题。但我这...原创 2019-09-09 09:23:57 · 179 阅读 · 0 评论 -
没有比这更新鲜的注解教程了 AS3.4 Gradle5
网上有很多 APT 相关教程,最近开始学这个,发现有一些内容已经过时了,在使用过程中也发现了一些坑,总结一下,形成这篇教程。本文开发环境:2019年5月初最新版本的 Android Studio 3.4、Android Plugin 3.4.0、Gradle 5.1.1。本教程需要读者了解注解 Annotation 的基本知识,不涉及 Annotation 运行时反射的用法,专注于自定义 A...原创 2019-09-09 09:25:50 · 342 阅读 · 0 评论