RemoteView

RemoteView 一种远程View,可以在其他进程中显示,提供了一组基础的操作用于跨进程更新它的界面。 使用场景 通知栏 通过NotificationManager的notify()来实现,可以自定义布局 桌面小部件 通过AppWidgetProvider来实现,本质是一个广播, 这两个都是运行在SystemServer进程中,为了能款进程更新UI,RemoteView 提供了一系列set方法, RemoteView支持的类型 ...

阅读更多

源码分析 - Glide4 之 缓存原理

概况 Glide 缓存分两个模块: 内存缓存和硬盘缓存 内存缓存 作用:防止应用重复的把图片读取到内存中。 分为两层 弱引用缓存:正在使用的图片使用弱引用缓存,这样的目的保护正在使用的资源不会被 LruCache 算法回收。 LruCache缓存:不再使用的图片使用 LruCache 缓存,这是一个强引用缓存 硬盘缓存 作用:防止应用重复的从网络或者其他地方下载和读取数据。 分为两层 ...

阅读更多

源码分析 - LeakCanery

使用 添加依赖 dependencies { debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5' releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5' testImplementation 'com.squareup.leakcanary:leakcana...

阅读更多

扫盲系列 - APK 打包流程

介绍 APK 就是 Android Package 。 APK 文件,其实就是一个压缩包,解压后就会发现他内部主要就是资源文件和class.dex,这个class.dex 就是 Android 系统 Dalvik 虚拟机可执行的文件, 一个 APK 解压后的 AndroidManifest.xml:对应源代码中的AndroidManifest.xml文件,但这里已经编译过了,文件内容已经不同了 assert目录: 对应源代码中的 assert 目录...

阅读更多

工作填坑 - Retrofit 上传图片

前言 最近遇到一个很奇怪的接口,说奇怪吧,是因为我使用 Postman 能调试通,使用 xutils 框架也能测试通,单独使用 OkHttp 测试通过。可是唯独使用 Retrofit + Rxjava + OkHttp 这个组合框架一直测试不通过。 先看看接口长啥样子吧。这是上传图片,接口真让我眼前一亮 参数就一句话: Post 的 body 内容是图片的二进制数据,把图片数据读出来直接写入 body 就可以 第二个接口是可以通过返回的字符串,拼接成这个图片...

阅读更多

使用 Python 美化文本,使中文与英文,数字,标点之间添加空格

bolg 也写了一段时间了,可是最近发现,好像排版有点问题,之前一直没注意,因为是码农缘故吧, blog 中会有中文,英文,数字等,可是很多时候没注意,就直接中英文挨着写了,中间没有加空格,导致很多地方不美观。 就如下图所示 很多英文都是紧挨着中文的,个人觉得中英文直接有空格隔开,看起来更舒服。如下图所示。 作为一个码农,要是自己一个一个的修改的话,就会太 low 啊了。 因为之前也学了一点 Python ,就想着用 Python 写个脚本来来处理。 ...

阅读更多

扫盲系列 - layoutInflater中 inflate() 参数总结

动态加载布局 我们都知道加载布局,常用的两种方式 View.inflate() LayoutInflater.from(context).inflate() 两种方式 可是这两个到底有啥不同呢,其实是一样的。只不过View.inflate() 进行了一层封装而已,内部实现原理,还是 通过 LayoutInflater.inflate()方法 //View.java public static View inflate(Context context,...

阅读更多

扫盲系列 - Mac 上 更新 rvm 版本

今天在 启动 Jelly Server 的时候,提示这样一个错误 作为一个玩过一段时间 个人 bolg 的时候,一看就知道,这是没安装 jemoji ,那就安装一下吧,一条命令行的事情 gem install jemoji 可是 还是太嫩了,竟然没搞定, 出现了另外一个错误。 zeitwerk requires Ruby version >= 2.4.4. Ruby 版本过低,不对啊,我记得之前已经升级版本了,就是通过 rvm instal...

阅读更多