自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 富文本处理TextView显示富文本的三种方案

TextView显示富文本的三种方案背景​ 在做Android开发的时候,大家可能会经常遇到这种需求:一个textview控件上想展示一段声明,声明的大部分内容是正常的很色字体,书名号引用的各种文件条款,使用蓝色字体显示,类似如下效果图。​ 这类需求一般有三种实现方式方式一:使用多个TextView来显示​ 这是最为简单无脑的方法,但是很试用场景比较有限,当涉及到文字换行时,这种实现方...

2019-10-11 20:25:43 7581 2

原创 通俗易懂的双亲委托

双亲委托模型一、什么是双亲委托​ 双亲委派模型,就是如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器,如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模型二、源码分析Class...

2019-10-08 21:14:33 345

原创 泛型详解

泛型Java SE5 引入了泛型的概念,泛意为广泛,型是类型。所以泛型就是能广泛适用的类型。产生泛型的原因​ 在JDK5.0之前,容器存储的对象都只具有java的通用类型:Object。单根继承结构意味着所有东西都是Object类型,所有该容器可以存储任何东西,但是由于容器只存储Object,所以当将对象引入容器时,它必须被向上转型为Object,因此它丢失了身份,将它取出时取到的是一个Ob...

2019-02-16 11:29:26 183

原创 resourcePrefix深入解析

resourcePrefix深入解析一、背景二、问题三、源码解析3.1、是个啥?3.2、resourcePrefix的校验规则是啥:4.如果我想做到对图片资源文件名的前缀要求,我要咋做?1.abortOnError设置为true,暴露lint检测出来的问题2.使用baseline ,做增量问题暴露,仅新增问题时暴露出来3.编码新增问题的种类可能很多,如何控制检测特殊的几个重点关注对象一、背景最近所负责的模块在做模块化相关优化,其中一项优化点就是,对各个子model做资源命名的统一要求,减少因为不同子mo

2021-09-07 20:38:03 3280

原创 LeakCanary2.x 源码解析

leakcanary2.x 源码解析一、导读在阅读源码前,请大家思考以下几个问题1.它是如何做到仅一行配置代码就完成监控的,接入leakcanary并没有写任何代码,它是如何运行起来的?2.它是在什么时机,去判断是否存在内存泄露的3.它是通过什么原理,来判断是否存在内存泄露的二、源码解析2.1 接入dependencies { ...接入方式 debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.

2020-07-09 21:16:28 563

原创 LeakCanary--原理及应用

LeakCanary–原理及应用一、简介1.1 名字由来LeakCanary ,直译为泄露的金丝雀,名称来源于一个关于金丝雀的故事。在17世纪的英国,煤矿业还没发展出检测瓦斯泄露探测仪,于是矿工们在下矿井时就带一只金丝雀。金丝雀对瓦斯及其敏感,稍微有瓦斯泄漏,它就会停止歌唱,浓度再高一些,金丝雀就会直接中毒身亡。而这时候,人比他皮糙肉厚一些,人类迟钝的感觉是完全没有意识到瓦斯的存在的。如果此时再不及时逃出矿坑,那么死的就是矿工了,正式借用了这层寓意,才起了LeakCanary这个名字,正如这个组件的功

2020-07-09 20:54:37 692

原创 ANR 分析流程

ANR 分析流程一、基本流程1.确定anr发生的时间(通过event_log搜索“am_anr”或打印trace时间点判断)2.查看CPU占用情况(通过adblog搜索"ANR in",搜索total关键字,查看CPU的整体使用情况)3.查看Trace文件,分析主线程等是否存在明显的阻塞与sleep步骤一如果log很全的情况下在确定了anr的时间点后,找到应用的进程,在log中直接主...

2020-01-02 15:58:56 1021

原创 getText 与getString的区别

getText 与getString的区别1.从源码的注释中可以看出 getText返回了带有格式化信息的字串,getString返回了无格式化信息的字串/** * Return a localized, styled CharSequence from the application's package's * default string table. * * @param res...

2019-12-02 19:24:03 1099

原创 实时代码检测

实时代码检测(checkstyle pmd lint)背景:每个公司都会有自己的编码规范,来维护项目代码,增加可读性,但是规范类的东西需要开发者有很强的自觉性,往往会因为开发者的懒惰或者个人水平、习惯等原因,导致最终的执行结果不是很好。一些大公司可能会在最终项目上线提测前要求出示代码规范的检测结果来控制,慢慢就形成了这样一种现象,开发大大们在提测前,疯狂的提交代码规范类修改,这里修改,无形中增加...

2019-11-28 17:44:02 1193

原创 BindService标准写法(包含服务端与客户端)

BindService标准写法在使用bindservice时,经常会忽略掉死亡回调的作用,下面提供一个标准的bindService的使用流程(客户端),仅供参考import android.app.Activity;import android.content.ComponentName;import android.content.Context;import android.con...

2019-05-10 19:38:56 672

原创 BindService标准写法

BindService标准写法在使用bindservice时,经常会忽略掉死亡回调的作用,下面提供一个标准的bindService的使用流程,仅供参考import android.app.Activity;import android.content.ComponentName;import android.content.Context;import android.content....

2019-05-09 14:59:03 343

原创 ConstraintLayout

ConstraintLayoutGoogle官方API传送门:https://developer.android.google.cn/reference/android/support/constraint/ConstraintLayout.html翻译佳作:http://www.jianshu.com/p/38ee0aa654a8大神的图形化界面的操作讲解:http://blog.cs...

2019-05-06 20:40:18 271

原创 InterruptedException

InterruptedException​ 不知大家在写某些功能,需要线程睡一段时间的时候,有没有注意到,为什么要有一个下图这样的 try catchtry { Thread.sleep(500);} catch (InterruptedException e) { e.printStackTrace();}在什么情况下会发产生这个异常呢?​ 下面是源代码中对他的描述...

2019-04-26 15:36:18 8988

原创 adb 常用命令

adb 常用命令###过滤关键字 adb logcat | grep###根据进程id 筛 adb logcat -v process |grep DMUI###挂载system目录为可读写 adb remount###重启 adb reboot###删除文件 adb shell rm -rf 文件名###展示目录列表 ...

2019-03-16 15:44:04 229

原创 Git 的基本用法

Git 的基本用法版本回退(知道commit id 就可以切回任意位置 git reset --hard ID)回退到上一个版本 git reset --hard HEAD^回退到上n个版本 git reset --hard HEAD~n后悔药 git log搜寻历史commit id git reflog...

2019-03-16 15:23:00 105

原创 GSON源码解析

Gson源码解析Gson的解析原理大致分为如下两种情况。1.如果是通过GsonBuilder创建的Gson对象,那么就用自定义的TyperAdapter来完成json的解析2.如果是通过new Gson()创建的Gson对象,那么就用Java反射机制来完成json的解析。那么Gson在是怎么判断是上述两种方式的哪一种呢?我们查看源码时,并没有提供一个特殊的字段来辨别?Gson(final...

2019-02-22 10:15:17 347

原创 ImageLoader详解(简单使用,源码分析,策略理解)

ImageLoader整体流程简单使用ImageLoaderConfiguration:全局配置:主要有线程类、缓存大小、磁盘大小、图片下载与解析的配置。DisplayImageOptions:与展示图片相关的配置ImageLoader:具体执行类,最终通过displayImage方法执行//DisplayImageOptions相关设置DisplayImageOptions op...

2018-12-12 17:46:29 609

原创 Android 动态权限申请

Android 动态权限申请1.Android6.0以下系统,只要在mainfest中注册了,则自动授权,不会弹出权限询问的对话框。2.Android6.0系统,同一组权限中如果有一个权限动态授权,则改组的所有的权限自动授权(需要先在mainfest中注册)3.Android 8.0系统。(在 Android 8.0 之前,如果应用在运行时请求权限并且被授予该权限,系统会错误地将属于同一权限...

2018-12-10 20:43:11 485

原创 IPC 机制(开发艺术探索)

IPC 机制文章目录IPC 机制使用场景:使用时需注意的问题:使用方法:原理:基础知识:通信方式(待完善)适用场景**IPC:**Inter-Process Communication的缩写,跨进程通信使用场景:1.分配更大的内存空间2.防止进程被杀死3.为至进程分担压力使用时需注意的问题:1.静态成员和单例模式完全失效(不是同一块内存,会产生不同的副本)2.线程同步机制完全失效...

2018-12-02 14:49:54 282

翻译 在WebView中构建网络应用

原文链接地址在WebView中构建网络应用如果你想在你的客户端应用上引入一个Web应用(仅仅是一个Web页),你就可以使用WebView。WebView是一个允许你在你的Activity布局中展示Web页面的View类的实现类。它不包括一个完全开发的浏览器的任何功能,如导航栏或地址栏。WebView所做的,仅仅是显示一个Web页面.一个更加常见的使用WebView的场景是当你想要在你的应用中...

2018-12-02 14:49:22 140

翻译 自定义组件

自定义组件​ Android提供了一套复杂而强大的组件化模型来建立你自己的UI。其依赖于基本的布局类:View和ViewGroup。首先,这个平台提供了各种各样的View和ViewGroup的子类——被称作窗口小部件(widgets)和布局(layout),你可以自由的使用它们来创建你自己的UI。​ 部分可用的窗口小部件如下:Button, TextView, EditText, ListVi...

2018-12-02 14:48:48 174

okhttp责任链模式demo,方便学习

okhttp责任链模式demo,方便学习

2019-10-28

空空如也

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

TA关注的人

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