自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

转载 Android国内优秀技术博客

https://github.com/hehonghui/android-tech-frontier/tree/master/the-bad-guys

2016-04-23 09:35:59 270

原创 Flutter 自定义裁剪之圆形豁口/缺口

Flutter 裁剪圆形缺口

2023-05-09 20:20:06 996

原创 OkHttp的源码分析(五)——连接拦截器ConnectInterceptor分析

我们知道,OkHttp是通过Socket连接的,但是到现在为止,我们还没看到和Socket连接相关的操作,本节内容主要就是为了看OkHttp是如何通过ConnectInterceptor做Socket连接的

2021-12-25 16:55:26 629

原创 OkHttp的源码分析(四)——缓存拦截器CacheInterceptor分析

继续上一篇文章,本文目的分析OkHttp的缓存流程,以及相关源码的学习,了解Http的缓存原理,以及OkHttp是如何缓存的

2021-12-15 12:01:17 1105

原创 OkHttp的源码分析(三)——BridgeInterceptor拦截器分析

继续上一篇文章,我们看BridgeInterceptor这个拦截器的具体工作内容

2021-12-09 17:21:08 127

原创 OkHttp的源码分析(二)——重试、重定向拦截器分析

上一篇文章中,我们了解学习了OkHttp的网络请求的主流程,本文主要分析OkHttp的不同拦截器的源码以及涉及到的功能作用。

2021-12-08 16:31:44 2418

原创 OkHttp源码分析(一)——主流程分析

本文主要是为了学习OkHttp源码,先从整体流程入手,分析该开源框架的主要工作原理,后续会逐步分解,学习网络框架相关知识

2021-12-02 10:23:55 2243

原创 Android打开系统自带文件管理器,全选菜单选项

打开系统的文件管理器,一般操作如下:Intent intent = new Intent(Intent.ACTION_GET_CONTENT);//设置类型,任意类型intent.setType("*/*");intent.addCategory(Intent.CATEGORY_OPENABLE);startActivityForResult(intent,OPEN_FILE_REQUEST_CODE);但是你会发现,企业微信里面【打开本地文件】的功能,右上角的更多设置里面有个【全选】的菜

2021-11-10 14:55:28 3856 2

原创 Mac上查看Systrace的坑

1、打开Monitor一直加载不出来,也不报错,一个空白窗口解决办法:去eclipse官网更新SWT插件下载SWT插件解压后拷贝 swt.jar 覆盖 /Users/用户名/Library/Android/sdk/tools/lib/monitor-x86_64/plugin/org.eclipse.swt.cocoa.macosx.x86_64_3.100.1.v4236b.jar,注:这里的命名为了覆盖以前的文件2、报Unable to find trace start.

2021-10-11 16:53:52 518

原创 关于android.view.WindowManager$BadTokenException的解决方法

关于Tokenandroid.view.WindowManager$BadTokenException: Unable to add window是不是经常遇到这个bug,通常的解决方式,是对activity加判断和保护if(!isDestroyed() && !isFinishing())然而,过几天会发现,这个崩溃,在日志平台上还是一直会上报,保护居然没有起到作用。要想彻底解决,我们首先先来理解这个token是什么?/framewo...

2021-10-08 15:50:07 2017 1

原创 技术方案评审文档模版

概述1.1. 项目背景1.2. 项目目标总体设计2.1. 设计说明2.2. API说明2.2.1. 参数/名称/安全/注释2.3. 接口调用说明3.3. 接口变更前端设计说明数据库表结构配置变更说明7.风险说明7.1. 潜在安全风险及防范措施7.2. 潜在稳定性风险及防范措施项目发布计划8.1. 发布计划8.2. 回滚计划...

2021-02-23 11:04:51 964

原创 Kotlin扩展函数

摘自官网解释:Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响扩展函数fun receiverType.functionName(params){ body}fun Float.toPx(): Float { return TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, this,

2021-02-23 11:00:32 111

原创 密封类sealed

密封类sealed密封类用来表示受限的类继承结构:当一个值为有限几种的类型、而不能有任何其他类型时。在某种意义上,他们是枚举类的扩展:枚举类型的值集合也是受限的,但每个枚举常量只存在一个实例,而密封类的一个子类可以有可包含状态的多个实例。以下代码用来表示网络状态的密封类sealed class LoadState(val msg: String) { class Loading(msg: String = "") : LoadState(msg) class Success(msg:

2021-02-20 11:38:14 263 4

原创 EventBus源码分析

EventBus源码分析前言EventBus是我做安卓开发以来,接触最早的一个第三方依赖库,当年早期刚接触的时候,觉得太神奇了,这个异步事件处理起来太好用了,比自己开线程,获得对象锁,通知异步执行,这种繁杂的操作好多了,简直优雅!今天决定挖挖这个EventBus里面的玄机,毕竟6年安卓老菜鸟,别人都拿你当大牛,咱也不好意思糊弄新人。Android 开发中使用的发布/订阅事件总线框架,基于观察者模式,下面摘录官网一段简介:EventBus is an open-source library for

2020-06-26 10:22:34 130

原创 Weex的基本原理和工作流程

Weex运行流程 通过transformer 工具把vue代码转成纯 JavaScript 代码,即jsbundle 在客户端运行一个 JavaScript 引擎,来执行jsBundle 在客户端通过JS Bridge,完成Native 代码可以和 JavaScript 引擎相互通信 WeexSDK主要分为3个部分:JS Bridge、Render、Dom,分别对应WXBridgeManager、WXRenderManager、WXDomManager 。通过WXSDKMana

2020-06-16 21:10:19 1044

原创 Activity加载xml布局流程源码分析(一)

首相明确的是,该文章只分析了xml加载到view布局中的流程,至于xml文件如何解析,并不是本文关注重点。我们更关注的是,通过SDK的API加载xml的流程,从中我们可以看到系统都做了哪些事,我们开发这么久,有没有认真思考过?Android开发者都知道,Activity通过setContentView加载xml布局文件,那就可以通过分析Activity的setContentView顺藤摸瓜,查...

2020-03-25 23:44:34 611

原创 Android Studio不能下载到第三方库

Android Studio用了蓝灯或者其他工具,还是不能下载到第三方库,这时候,这样配置项目根目录gradle文件allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun...

2020-03-20 09:50:32 538

原创 Aop技术框架在移动端的实施应用

内容目录什么是AOP(What)AOP的定义AOP中的几个概念AspectJ 介绍为什么要有AOP?(Why)怎么在客户端中应用(How)几个重要场景的分析(Where)写在最后AOP原理其他两个小问题面向过程编程(Procedure Oriented Programming),即OPP注重算法,功能不同的函数调用。常用的C语言优点:任务分解,按部就班面向对象编程(Object Orien...

2020-03-18 22:50:34 217

原创 关于Https的加密过程理解

在https传输过程中,需要用ssl/tls对数据加密和解密,可以看出,https只是在 http通信接口部分使用了 SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议来实现

2020-03-14 13:51:19 282

原创 HTTP1.1协议

HTTP1.1摘要持久化连接引入管道机制在头部加入Content-Length字段分块传输增加了命令缺点不能不说的TCP摘要http1.1自1997年诞生,发布以来,直到今天依然是最流行的版本持久化连接TCP默认连接不关闭,可以被多次请求,不用声明Connection:keep-alive。同一个域名允许同时建立6个持久连接。规范做法是在客户端最后一个请求时,关闭TCP连接。Connect...

2019-03-10 16:34:45 382

原创 HTTP1.0

HTTP1.0Http定义简介请求格式回应格式缺点Http定义Http是基于TCP/IP的应用层协议,不涉及数据包传输,主要规定了客户端和服务器之间的通信格式,默认为80端口简介Http/1.0发送请求内容可以使文字、视频、图像、二进制文件GET、POST、HEAD命令请求格式和回应格式。除了数据部分,必须包含请求头(Http header),用来描述元数据。还包括状态码、多字符集...

2019-03-10 13:47:14 212

原创 可复用MVP架构搭建

Mvp想必做Android开发的同学多多少少都会接触一些,今天来分享下基础的MVP架构如何构建Mvp核心思想:mvp把activity中ui逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model还是原来的Model 优点:1、activity职责更加明确,完成UI逻辑和使用哪一个表示层2、代码结构清楚,更容易维护3、方便单元测试4、避免Act...

2018-08-28 19:52:04 534

原创 Android图片占用内存的计算

首先明确两个问题:图片大小和占用内存大小没有关系,图片大小之关系到apk的大小webp虽然图片小,占用内存方面和其他图片没有性能上的优势几个基本概念px:像素(pixel),指的是屏幕上的物理点,最小的独立显示单位ppi:每英寸像素点(Pixels Per Inch)dpi:每英寸点(Dots Per Inch)dp:像素无关点(Density-Independent pixel),这个Andro...

2018-07-05 20:37:06 989

原创 分析Universal-Image-Loader的缓存原理

            最近阅读了一下UIL的源码,因为在Android开发中,用第三方框架加载图片是很正常的,但是原理一定要自己有所了解,通过github下载源码,看下使用文档,集成到工程中,是最基本的技能。了解框架后面的原理,才是我们真正要学习的东西。    首先说下Android 中的缓存,一般所说的三级缓存分为内存缓存、磁盘缓存、网络缓存。  UIL    网络缓存实际上还是下载后,缓存到...

2018-06-26 21:31:23 382

原创 Android vector 标签

        Vect简介        Vector 就是 Android 的 SVG 实现。Vector是Android 5.0 之后才出来的,不过从 AppCompat23.2 开始,Google开始支持在5.0版本以下使用Vector.        vector功能可以自己通过AS导入,可参考这边文章:         https://blog.csdn.net/klxh2009/ar...

2018-04-03 14:35:04 894

原创 一张图搞懂android事件分发机制

事件分发机制在安卓中非常重要,这个事情如果搞不懂,会困扰你很多事情。比如说,应用了github上的某个大神的库,如果发现这个库实现了你需求的80%,还有那么20%需要你结合实际需求来实现,改大神代码又不能改,怎么办呢?这个时候往往需要搞清楚自己的布局控件和第三方库的控件事件传递关系。说的比较模糊,没关系,只要知道事件传递必须学会,就ok了。     直接上图:

2017-08-27 13:38:12 3388 2

原创 Java设计模式(三)——建造者模式

建造者模式是一个对象易于扩展的设计模型,比如说一个套餐、一个游戏人物,都属于一个产品类,随着产品的不断增加,每种产品既有节本属性,也有自己独立的属性,这个时候进行产品的交付过程中,代码要易于扩展和解耦。        个人理解:                          建造者模式是将客户端和建造者隔离,客户端不需要知道具体的产品实现细节,各个建造者之间系统分开,完成各自负责的具体

2017-06-15 20:35:10 257

原创 FragmentManager is already executing transactions after using method setOffscreenPageLimit()

异常处理,记录

2017-04-05 21:24:24 1117

原创 使用Fresco加载本地图片

Fresco加载图片的api是设置uri,如何获得本地图片的加载呢?类型Scheme示例远程图片http://, https://HttpURLConnection本地文件file://FileInputStreamContent providercont

2017-04-05 18:39:57 1734

原创 Java设计模式(二)——策略模式

一、定义场景              实现某一种功能有诸多算法或者策略,如果简单的将这些算法或者策略进行封装,随着工的迭代,往往导致会导致封装好的算法类非常臃肿,难于扩展。而策略模式恰好解决了这一难题,使得算法独立于他的调用者独立运行,易于扩展,满足软件开发的高内聚低耦合的要求。二、类图这个模式涉及到三个角色:1)环境(Context)角色:持有一个Strategy的引用。

2017-03-30 21:56:00 231

原创 Java设计模式(一)——观察者模式

学习设计模式是IT人员毕竟之路,在实际工程中,如何对业务和逻辑的分离,对业务模式的理解是否深刻,如果只是简单的知道功能实现,我想无论工作几年,其实实际经验只是工作之初的1年,毫无长进,希望自己能够坚持把23种java设计模式全部撸一遍,夯实自己JAVA基础,这是对一个Android开发人员最基本的要求。观察者模式,又称订阅者模式,有主题对象,有订阅者对象,一个主题可以有多个订阅者。在实际工程应

2017-03-25 20:42:10 381

原创 Suggestion: add 'tools:replace="android:allowBackup"' to <application> element at AndroidManifest.xm

项目依赖库和主程序的allowBackup冲突解决方法:<application tools:replace="android:allowBackup" android:name=".MyApplication" android:allowBackup="false"添加tools:replace属性,替换要覆盖的标签属性即可。这样库文件中Android

2017-02-16 09:58:38 14480 1

原创 安卓性能优化之界面UI优化——ViewStub

UI优化

2016-12-08 20:36:53 380

原创 Activity实现透明蒙版效果

经常会遇到要实现某些蒙版效果的需求。今天分享一个activity实现蒙版效果的demo,其实很简单,主要是修改activity在AndroidManifest中的theme属性。而theme属性就是风格属性。首先确定透明颜色及透明度,在color.xml中定义#eff6f6f6color的前两位是透明度,0xef / 0xff = 透明度百分比%之后在style.xml中定义风格,

2016-12-08 19:25:26 3574

转载 MQTT简介

转自http://blog.sina.com.cn/s/blog_a27e792f0102vxb7.html什么是MQTT​MQTT 是 Message Queuing Telemetry Transport 的缩写,中文翻译为:消息队列遥测传输。一直没人解释什么是“遥测”,大家也呵呵一下就似懂非懂过去了。实际上遥测就是远程测量的意思,对于路途遥远的(比如卫星上的信息)

2016-12-05 20:06:18 1710

原创 listview数据局部刷新

在开发过程中,某些效果不希望所有数据都刷新,因为会调用getview,导致效率很低,今天分享一个局部刷新的方法。private static class ViewHolder { ImageView imageView; TextView textView; private void setContent(String string) {

2016-12-05 19:46:50 291

原创 com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated obj

这个异常是服务器返回的字符串中含有多余的特殊字符,或者空格,或者字段内容包裹两层引号引起的,导致客户端解析失败。

2016-10-20 15:20:17 689

原创 HashSet删除重复元素

应用场景:经常遇到网络请求回来的数据是一个list形式的列表,这个List的数据类型是自自己定义的数据类型,这里面包含了重复元素,而重复元素的判断重复的标准往往是自己定义数据类型的某个成员变量来区分,比如,返回的是设备信息,则会有一个对应的设备ID字段,如果是人物信息,返回注册手机号等等。如果通过for循环等手段不仅耗时,好需要同步返回的数据列表。是一个非常令人头疼的问题。高效的解决这个问题途径就

2016-09-07 21:15:11 1642

原创 android消息处理之Handler

最近在公司分享了消息处理都线程,同时阅读了Handler的源码,特此记录下来,并分享自己demo。首先,我们知道Handler是用来处理消息和发布消息的,而Looper是负责Handler和Thread之间的桥梁,Messagequeen是消息队列,Looper负责将消息不断传递给Handler的回调函数。 public Handler(Callback callback, boo

2016-08-28 15:16:28 399

原创 test

test

2016-08-23 16:23:48 240

空空如也

空空如也

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

TA关注的人

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