自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

网鱼的栈

恐惧源于无知

原创 Glide学习笔记

Glide最全解析 比较全面的介绍Glide使用,通过源码分析执行流程,自定义模块,图片转换等功能 关于bitmap的缓存处理方面的知识: Glide篇_01关于Bitmap缓存 Glide缓存机制 缓存源码分析 关于bitmap的复用处理方面的知识: Glide(四):强大...

2020-06-29 17:34:29 19 0

转载 Bitmap优化

原文地址:Android性能优化(五)之细说Bitmap 例如:使用Pixel手机拍摄4048x3036像素(1200W)的照片,如果按ARGB_8888来显示的话,需要48MB的内存空间(4048*3036*4 bytes),这么大的内存消耗极易引发OOM。本篇文章就来说一说这个大胖子。 ...

2020-06-18 16:52:16 27 0

转载 HTTPS 原理分析——带着疑问层层深入

原文地址:HTTPS 原理分析——带着疑问层层深入 HTTPS 随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA证书等,但对于以下灵魂三拷问...

2020-06-03 15:51:48 40 0

转载 Activity的启动流程,如何判断当前activity所在进程已经启动了

startActivity启动过程分析 https://blog.csdn.net/luoshengyang/article/details/6689748 看完这两篇干货,应该一清二楚了。 是否启动应用进程的分支在ActivityStackSupervisor#startSpecifi...

2020-06-01 15:24:42 64 0

转载 为什么systemServer进程与zygote进程的通信是使用socket而不是binder?

Android Framework层学习——为什么SystemServer进程与Zygote进程通讯采用Socket而不是Binder 一些讨论:

2020-05-30 17:23:34 76 0

原创 OkHttp3原理解析

概览-Okhttp3 研究总结 (面试) 主要原理解析-OKHttp原理(线程池、拦截器链、连接池、缓存管理、连接复用、连接清理规则) 拦截器解析 dispatcher的三个任务队列的作用解析 链接复用池解析

2020-05-23 15:34:00 46 0

转载 建造者模式Builder

一篇文章就彻底弄懂建造者模式(Builder Pattern) 背景 当一个类的内部数据过于复杂的时候(通常是负责持有数据的类,比如Config、VO、PO、Entity...),要创建的话可能就需要了解这个类的内部结构,还有这些东西是怎么组织装配等一大坨乱七八糟的东西,这个时候就会增加学习...

2020-05-22 16:22:10 31 0

转载 EventBus原理

EventBus 使用(全面分析,细节提醒) Android EventBus源码分析,基于最新3.1.1版本,看这一篇就够了!! EventBus 原理解析 EventBus运用发布-订阅模式,需要进行注册和反注册,在接收事件的方法上需要添加@Subcribe注解,且方法参数有且只有一个,...

2020-05-20 15:17:49 39 0

转载 模块化/组件化开发

Android组件化/模块化开发(一) Android组件化/模块化开发(二)

2020-05-20 15:04:39 20 0

原创 android滑动冲突解决方案

参考资料: Android TouchEvent之requestDisallowInterceptTouchEvent Android事件分发机制及滑动冲突解决方案 1、同方向,根据业务需要进行拦截 2、不同方向,根据滑动距离进行拦截 其中拦截方式: 1)内部拦截:在父容器的onInt...

2020-05-20 15:00:33 40 0

转载 Android webview安全漏洞

原文链接: https://www.jianshu.com/p/3a345d27cd42 webview缓存机制,原文链接: https://www.jianshu.com/p/5e7075f4875f

2020-05-20 14:34:03 31 0

转载 Activity的启动流程及启动预览窗口

https://www.jianshu.com/p/5573d4044758 一张图展示: 原图地址: https://upload-images.jianshu.io/upload_images/2828107-50880c336e7ff625.jpeg

2020-05-12 10:44:43 37 0

转载 使用choreographer的FramCallback实现帧率监听

原文地址: https://blog.csdn.net/u013493809/article/details/62215250

2020-05-11 15:33:46 38 0

转载 LinkedBlockingQueue原理

1、简介 上篇我们介绍了ArrayBlockingQueue的相关方法的原理,这一篇我们来学习一下ArrayBlockingQueue的“亲戚”LinkedBlockingQueue。在集合框架里,想必大家都用过ArrayList和LinkedList,也经常在面试中问到他们之间的区别。Arra...

2020-05-09 10:49:02 39 0

转载 FragmentTransaction与Fragment生命周期的关系

原文出处:https://segmentfault.com/a/1190000000650573 在Android中,对Fragment的操作都是通过FragmentTransaction来执行。而从Fragment的结果来看,FragmentTransaction中对Fragment的操作大致...

2020-04-08 15:28:40 39 0

转载 Java线程的6种状态及切换

Java中线程的状态分为6种。 1.初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 2.运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。 线程对象创建后,其他线程(比如main线程)调用了该对象的start...

2020-02-29 14:30:32 26 0

原创 Mac上阅读android源码

首先,需要下载源码,android的源码是通过repo管理的。 1. repo是什么? repo是一种代码版本管理工具,它是由一系列的Python脚本组成,封装了一系列的Git命令,用来统一管理多个Git仓库。 2. 为什么要用repo? 因为Android源码引用了很多开源项目,每一个子...

2020-02-05 20:01:10 134 0

转载 设计模式之责任链模式

https://www.cnblogs.com/ysw-go/p/5432921.html 原文: 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的...

2019-05-08 16:06:15 78 0

转载 Android中include标签的使用及注意事项

include标签是用来解决布局复用的,它可以和其他布局(LinearLayout等)一样可以设置layout_属性,设置的layout属性会覆盖include包裹的父布局的属性,一般建议不要在include中设置layout属性。 原文 include标签可以实现在一个layout中引用另一...

2019-05-07 10:38:46 484 0

原创 layout_weight属性的用法和意义

一直没理解在LinearLayout中的layout_weight属性的意义,使用的时候都是将子控件的layout_width或者layout_height设置为0,然后在设置layout_weight的权重值,以至于在被问到如果设置了layout_width为具体的值时对layout_weigh...

2019-05-07 10:01:02 7375 0

原创 多个任务在IntentService中是如何被顺序执行的

使用过IntentService的都清楚,这是一个继承自Service,内部实现了HandlerThread来进行异步处理任务。因为Service默认是运行在主线程的,通过内部启动一个HandlerThread,和一个关联了该thread的handler来将该service得到的intent放入到...

2019-04-17 19:33:26 670 0

转载 AIDL跨进程通信中的,传递自定义类型参数的修饰符in,out,inout的区别

如下文章用实例测试了in,out,inout的区别: Android 深入浅出AIDL(一) 全文如下: 前言 本文主要讲述AIDL作用以及如何快速上手AIDL项目 简介 A [android] I [Interface] D [Definition] L [Language] And...

2019-04-12 16:11:46 403 0

转载 ActivityStackSupervisor,ActivityStack,ActivityRecord,TaskRecord的关系

在学习activity的启动流程的时候,经常会碰到这几个类的身影,特别是在AMS中,ActivityStackSupervisor和ActivityStack对象的调用链经常切来换去的,比叫绕。 下面这篇文章就是梳理了下这几个类的关系。 ActivityRecord、TaskRecord、Ac...

2019-04-11 10:50:54 904 0

转载 Activity的启动流程分析

流程较为复杂,可参看这几篇文章: Activity启动过程分析 Android Launcher 启动 Activity 的工作过程 【凯子哥带你学Framework】Activity启动过程全解析 Android进阶——Android四大组件启动机制之Activity启动过程 ...

2019-04-09 15:29:55 151 0

转载 设计模式之享元模式在handler中的运用

享元模式的基本定义和用法: 简说设计模式——享元模式 在使用handler的时候发现,创建message对象有两种方式,一种是直接new,一种是使用Message.obtain(),这个message的静态方法是这样实现的: private static final Object sPoo...

2019-04-03 11:29:14 683 0

原创 线程池是如何重复利用空闲的线程来执行任务的?

在Java开发中,经常需要创建线程去执行一些任务,实现起来也非常方便,但如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。此时,我们很自然会想到使用线程池来解决这个问题。 使用线程池的好处: ...

2019-03-29 15:18:55 4304 5

原创 实现一个类似容器里面的水慢慢上涨或者充电电量上涨的动画效果的曲折历程

题外话:文章需要配动态图gif来展示动画效果,在ubuntu下制作gif可参考这篇文章,简单方便,我精简了下步骤,如下: 制作gif动画图片: https://www.cnblogs.com/bozhicheng/p/5933984.html 首先用录屏工具Kazam录制一段视频,其次再用ff...

2019-03-27 15:50:55 543 0

转载 onResume中Handler.post(Runnable)为什么获取不到宽高?

原文地址:https://blog.csdn.net/u010019468/article/details/80007675 貌似已无效。 原文如下: 1 概述 一般需求中会出现在Activity启动中需要获取Ui控件相关大小或者在界面绘制完成之后刷新数据,我们都知道在UI绘制完成之...

2019-03-19 19:09:22 256 0

转载 Android 常用换肤方式以及原理分析

原文地址:https://juejin.im/post/5b8f6dcde51d450e6a2dcadf 原文内容: 常用方法 1.通过Theme切换主题 通过在setContentView之前设置Theme实现主题切换。 在styles.xml定义一个夜间主题和白天主题: &...

2019-03-14 14:15:33 166 0

原创 Android studio进行文件对比

在平时开发中,避免不了要对同一个文件的不同版本进行代码差异的对比。比较好用的工具就是Beyond Compare,这个工具可以同时对多个文件或者整个工程代码进行对比,有差异的地方会显示出来。处理完差异后,然后又切换到代码编辑工具上开发。 后来,用惯了AS后发现,对某个文件的不同版本分支的对比使用...

2019-02-20 11:12:54 3035 1

原创 SearchManager提供全局搜索服务

在适配全局搜索功能的时候发现一个类:SearchManager,从来没使用过,这个是用来查询系统内所有支持全局搜索功能的应用。相对应的服务就是SearchManagerService,类似于ActivityManagerService的作用,在系统启动的时候就启动了。 一般用法就是首先获取服务:...

2019-02-15 17:27:33 461 0

原创 从源码处理一理Retrofit的异步网络请求如何把结果切换到主线程

前提,需要具备的知识点是:动态代理,反射,注解。 场景:某日面试的时候被问道,Retrofit异步网络请求是怎么把结果返回给主线程的? 答曰:具体原理不是很清楚,最后应该是通过handler把结果发送到主线程的吧。。。 问:你确定吗?真是handler吗? 这一问把我问懵逼了,心里在想An...

2019-01-28 19:05:08 2967 3

原创 面试集锦:关于AIDL传递对象

问:AIDL传递的自定义对象,需要该对象实现Parceable接口,并在里面实现read和write方法,并且read和write的执行顺序是需要一致的,否则就会出错。那么当我存在一个客户端需要增加和改变该对象的属性,而另一个客户端保持原来的对象的属性的时候,该怎么设计?通过什么方式来实现? 一...

2019-01-24 17:30:38 232 0

原创 gradle导入新的依赖后各种问题

有时候导入一个新库 compile'com.libertybrowser:affiliatetrigger:2.0.1' 后会gradle构建的时候发生这种错误: Process 'command '/home/meizu/android/sdk/b...

2019-01-24 17:21:50 3723 0

原创 关于手机设置中,显示和字体大小的变更对视图展示效果的影响

在手机中的设置功能中,一般会有显示和字体大小调节的选项: 其中字体大小调节的是文字的大小,比如说控件TextView中的文字大小,一般我们在设置textview文字大小的时候,单位一般会使用sp(跟密度和用户偏好有关),布局宽高一般使用dp(密度相关)。官方这样定义: sp: Scale-...

2018-12-28 18:11:39 1888 0

原创 设置透明主题引起动画失效以及打开其他应用闪现桌面图标的问题

近日在适配魅族手机的时候,发现设置Activity的主题的 <item name="android:windowIsTranslucent">true</item>透明状态,或者 <item name...

2018-11-08 15:15:19 1069 0

原创 巧用LinearLayout中的layout_weight属性适配不同的分辨率,横竖屏和超大字体模式的界面

首先,layout_weight这个属性是相对于父布局是LinearLayout来使用的,表示的是该作用的控件在父布局中的权重。 具体计算方式可以参考Android:LinearLayout布局中Layout_weight的深刻理解 原文如下: 首先看一下LinearLayout布局中Lay...

2018-09-27 20:30:35 726 0

原创 关于弱引用WeakReference的一点疑问

很多文章都这样解释弱引用: 弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用...

2018-07-25 18:20:29 1481 3

原创 View补间动画Animation运行原理

先上大料: View 动画 Animation 运行原理解析 Android动画原理分析 看完以上两篇文章,基本上就可以理清补间动画的实现原理了. 基本流程如下: 1,使用View.startAnimation()开启一个动画,在这个方法里面初始化了animation,并且执行了inva...

2018-06-22 17:37:07 801 0

原创 网络请求发生javax.net.ssl.SSLHandshakeException异常的情况

在使用volley和okhttp的时候,访问https的网站,经常会碰到一个异常就是javax.net.ssl.SSLHandshakeException,大致就是证书相关的异常。发生了好几次。先是怀疑是不是访问的网站是自签名网站,即没有在CA进行认证。一般这种情况下会报的异常是这样的:javax...

2018-05-22 15:32:26 22723 1

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