自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

何武昭的专栏

无边星宇,吾只拈花邪笑傲然前行...

  • 博客(21)
  • 收藏
  • 关注

原创 SingleLiveData:解决LiveData『数据倒灌』的问题(方案二)

解决LiveData数据倒灌的问题

2022-03-06 12:23:24 2505

原创 Android原生阴影实现方案(API28及以上)

Android控件的阴影效果的实现方式有很多种,这里介绍一下另一种Android原生的阴影实现方案(API28及以上)。1、阴影原理阴影效果的实现采用的是Android原生的View的属性,拔高Z轴。Z轴会让View产生阴影的效果:可以理解为有一束斜光投向屏幕,Z 轴值越大,离光就越近,阴影的范围就越大;Z 轴值越小,离光就越远,阴影的范围就越小。2、Z轴Z=elevation+ translationZ拔高Z轴可以通过控制elevation和translationZ。区别:elevat.

2021-05-31 20:52:58 6778 7

原创 简单粗暴解决LiveData『数据倒灌』的问题

1、什么是数据倒灌?一句话总结就是:先给LiveData设置了value,然后监听者才开始对LiveData进行监听,这时LiveData的value会立马回调给监听者。虽然从google设计者的角度来看,这并不是一个设计缺陷,但从我们使用者角度来看,其实很多场景下这并不是我们想要的。我们更期望的是:只收到对LiveData开始监听之后的value,开始监听之前的旧value不要回调给我。2、数据倒灌的根本原因LiveData每次setValue或postValue时mVersion都会自增:

2021-05-22 16:48:42 12331 3

原创 IntentFilter匹配规则

1、Activity启动方式我们知道,启动Activity分为两种,显式调用和隐式调用。显式调用需要明确指定被启动对象的组件信息,包括包名和类名。隐式调用不需要指定组件信息,但需要匹配目标组件的IntentFilter中所设置的过滤信息。2、IntentFilterIntentFilter中的过滤信息包括:action、category、data。为了匹配过滤列表,需要同时匹配过滤列表中的action、category、data信息,否则匹配失败。一个过滤列表中的action、category

2021-05-22 13:49:25 233 1

原创 【单例深思】饿汉式

1、抛出问题为什么饿汉式单例是线程安全的?为什么饿汉式单例没有延迟加载(Lazy Loading)?2、JVM类加载机制饿汉式单例的实现:public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() {} public static Singleton getInstance() {

2021-05-22 13:46:21 166 3

原创 OOM?高性能帧动画FrameAnimation-TextureView和BlobCache

一、背景前段时间由于工作上的需求,需要实现一个帧动画,由于时间紧迫,于是就想参考一下网上开源的库,找了一圈,都没有找到特别合适的,有些甚至一大堆问题。于是参考他人的,自己写了一个。二、为什么不用Android原生帧动画?时间紧迫?那为什么不用Android原生帧动画?有什么缺点吗?Android 提供了AnimationDrawable用于实现帧动画。在动画开始之前,所有帧的图片都被解析到内存中,一旦动画较复杂帧数较多,在低配置手机上容易发生 OOM,即使不发生 OOM,也会对内存造成不小的压力。

2020-12-07 23:08:02 1356 2

原创 BlobCache与DiskLruCache的读写对比

上一篇文章详细介绍了BlobCache算法,这篇文章就写一下跟DiskLruCache的读写速度对比。注意:该文章的所有测试数据是基于Android Studio自带模拟器的Pixel XL机器测试。先奉上GitHub代码:CacheContrast一、存储速度对比二、读取速度对比三、总结从上面的对比结果可以看得出:BlobCache在存储速度上比DiskLruCache慢;BlobCache在读取速度上比DiskLruCache快;BlobCache在读取速度上有很大的优

2020-09-20 19:27:28 420

原创 BlobCache算法详解

BlobCache算法和LruCache算法是android中的图片缓存算法。LruCache算法在日常开发中用得比较多,但BlobCache却用得比较少,网上介绍的文章也是少得可怜。跟LruCache不一样,BlobCache并不属于android的util,BlobCache最开始使用的地方是谷歌的Gallery,具体源码可以查看:BlobCache一、BlobCache框架BlobCache会在本地保存三个文件imageCache.idx、imageCache.0、imageCache.1(后

2020-08-15 21:09:52 1378

原创 Activity销毁onStop或onDestroy延时10s左右才回调

好记性不如烂笔头。生活中多做笔记,不仅可以方便自己,还可以方便他人。前段时间,同事跟我说他遇到一个很奇怪的问题:退出页面,Activity销毁时onStop或onDestroy延时10s左右才回调。如图:听到这个问题,首先想到的是因为在SecondActivity的onPause或在MainActivity的onResume里执行了什么耗时操作导致的。后来检查了一遍发现没有做耗时操作。找...

2019-09-08 17:21:58 3691 1

原创 final修饰的Boolean(布尔值)可以被修改值?

好记性不如烂笔头。生活中多做笔记,不仅可以方便自己,还可以方便他人。背景前几天,测试同学提了个跟头像有关的bug,我去检查代码,梳理逻辑,打log,调试代码。头像的显示采用的是Glide库的组件。大概的代码逻辑如下: private void setImage(ImageView imageView, String url, final boolean test) { ...

2019-06-30 19:24:42 2300

原创 重温View绘制原理(二)

紧接着上一篇文章重温View绘制原理(一),继续看view绘制原理。1. View绘制流程view的绘制是从根视图 ViewRoot 的 performTraversals() 方法开始,从上到下遍历整个视图树,每个 View 控制负责绘制自己,而 ViewGroup 还需要负责通知自己的子 View 进行绘制操作。视图操作的过程可以分为三个步骤,分别是测量(Measure)、布局(Layou...

2019-06-26 20:49:49 876

原创 重温View绘制原理(一)

1. View的知识前提View的绘制是从上往下一层层迭代下来的:DecorView–>ViewGroup(—>ViewGroup)–>View,所以,在学习view的绘制原理前,我们来先看看DecorView。1.1 DecorView的视图结构Android 中 Activity 是作为应用程序的载体存在,代表着一个完整的用户界面,提供了一个窗口来绘制各种视图。每个a...

2019-06-26 20:48:09 1238

原创 Handler知识收集整理

Handler知识收集整理我是代码搬运工,不能仅仅只是搬运,还要整理一下。1. Handler组成部分:Message:消息Handler:消息的发起者Looper:消息的遍历者MessageQueue:消息队列2. Handler的使用流程:使用Handler之前的准备工作有三步:调用Looper.prepare()(主线程不需要调这个,因为APP创建时,main方法...

2019-03-25 08:40:15 230

原创 阅读《疯狂Java讲义》笔记

背景古人云:温故而知新。 多回头看看基础总能学到新东西。正文第三章 数据类型和运算符1. String字符串类型不是基本类型,而是引用类型。2. 强制转换类型:表数范围大 -> 表数范围小 : 缩小转型3. Java会确保每个字符串常量只有一个,不会产生多个副本:String s0 = "hello";String s1 = "hello";String s...

2018-04-22 18:34:57 1369

原创 阅读《阿里巴巴Android开发手册1.0.1》笔记

背景2018春节余味尚未消,阿里巴巴为移动开发者们准备了一份迟到的新年礼物——《阿里巴巴Android开发手册》1.0.1版本。在此写下我的阅读笔记,记录下自己平时没有注意的一些问题,规范自己。正文1.【强制】Activity 间通过隐式 Intent 的跳转,在发出 Intent 之前必须通过 resolveActivity 检查,避免找不到合适的调用组件,造成 Acti...

2018-03-11 00:11:04 414

原创 最全的Android 颜色透明度

好记性不如烂笔头。生活中多做笔记,不仅可以方便自己,还可以方便他人。背景开发的都知道,UI微调都是令人头痛的,尤其是颜色的微调。如果视觉稿直接给颜色值那倒没啥,可怕的是后面还有标了透明度,而且视觉还原后发现颜色太透明了,要你透明度再调调,这才烦人。我总不能记住100个透明度的值吧。一次计算,无数次使用,这文章,稳了。正文Android中的颜色值一般格式是:#...

2017-12-16 20:51:34 179534 24

原创 ListPreference的summary和entries中插入图片

ListPreference的summary和entries中插入图片

2017-10-15 20:43:36 1108

原创 分析Android 搜狗输入法在微信和QQ中发送图片和表情

好记性不如烂笔头。生活中多做笔记,不仅可以方便自己,还可以方便他人。背景有没有发现,有时候表情或图片的交流更能让气氛更愉悦。斗图,成了群里的日常小事,然而,当你没有图可斗的时候就尴尬了。最近,搜狗输入法提供了非常强大的各种斗图大全,这可不得了了,只要输入法你希望表达的意思的文字,就能搜到到相应意思的表情,这功能非常有意思。最近,老大要我研究一下搜狗输入法是如何直接在微信和QQ上发图片和表情的。作为

2017-10-15 20:26:28 13352 9

原创 Activity重建之殇

Activity重建之殇

2016-10-23 22:35:12 1496

原创 Recyclerview刷新延迟的问题

Recyclerview刷新延迟的问题

2016-10-16 23:28:54 3095

原创 调用requestFocus,而setOnFocusChangeListener却不起作用?

调用requestFocus,而setOnFocusChangeListener却不起作用

2016-08-02 23:42:45 6063

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除