- 博客(18)
- 资源 (3)
- 收藏
- 关注
原创 LeakCannary使用方法及实现原理探究(二)—— LeakCannary实现原理及源码分析
写在前头这里首先将LeakCannary的原理写在这里,让大家有一个初步的印象,然后我们再一步步去分析具体的实现逻辑LeakCannary原理1. Activity onDestroy之后将它放到一个WeakReference2. 这个WeakReference关联到一个ReferenceQueue3. 查看ReferenceQueue是否存在 Activity的引用4. 如果该Aci...
2018-10-16 17:43:41
1074
原创 LeakCannary使用方法及实现原理探究(一)—— 使用方法简述
leakcannary##简介LeakCanary是Square公司研发的一个可视化的内存泄漏分析工具,github地址为https://github.com/square/leakcanary。它的使用非常简单,下面我们将一步步进行分析。##集成LeakCannary在我们的build.gradle中添加如下依赖:dependencies { debugImplementati...
2018-10-15 17:50:09
847
1
原创 Java注解
##注解的定义Java注解是在JDK5时引入的新特性,Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。当然这样解释可能比较晦涩难懂,注解可以简单理解为对一段代码的说明解释。##注解语法###注解的写法public @interface MyAnnotation {}跟接口的写法类似,在inter...
2018-09-18 18:01:32
212
原创 算法题整理(持续更新)
1.一个按升序排列好的数组int[] arry = {-5,-1,0,5,9,11,13,15,22,35,46},输入一个x,int x = 31,在数据中找出和为x的两个数,例如 9 + 22 = 31,要求算法的时间复杂度为O(n);分析:该题不难,主要关注点应该为要求时间复杂度为O(n),因为数组是按升序排列,所以可以定义两个指针i、j,分别从数组的两端开始遍历,如果a[i]+a[j]...
2018-09-11 14:41:43
691
1
原创 Android 网络请求框架volley源码解析(二) —— volley缓存原理
Volley的缓存目录通过上一篇分析中我们发现,创建一个请求队列的同时,会同时创建Volley的缓存目录和DiskBasedCache缓存对象,我们可以得知Volley的缓存目录就是在我们应用内置的cacheDir目录下的volley文件夹中,然后把这个目录用作DiskBasedCache硬盘缓存的目录,源码如下:public static RequestQueue newReques...
2018-09-10 15:47:44
269
原创 Android 网络请求框架volley源码解析(一) —— 网络请求部分
volley是google提供的一个网络通信框架,非常适合我们进行一些数据量不大、频繁的网络通信操作。这是一个开源项目,地址为https://github.com/google/volley,今天我们就分章节来分析一下volley框架源码,探寻它内部的实现机制。基本使用这里列举一个volley最基本的用法,通过该用法入手,来一步步分析volley是怎么进行网络通信的。Req...
2018-09-07 17:08:02
306
原创 Android Avtivity setContentView源码分析
前言 平时我们开发过程中,给Activity设置布局的时候,直接调用的setContentView,然后我们在xml布局文件中写的布局就可以显示出来,那这个过程到底是怎么样的呢,今天我们来分析一下,setContentView都做了什么。Activity setContentView首先我们看Activity的setContentView方法,这个方法有几个重载:pu...
2018-09-04 11:43:05
201
原创 Android Handler机制源码分析
本文分析基于android-25Handler是Android系统提供给我们的一个工具,主要用于多线程间的通讯,比如更新UI等等。一、Handler常见用法1. 首先定义一个Handler,并重写handlerMessage方法,当收到消息时,根据msg.what判断来源,然后进行相关操作,这里是更新了一个textView的显示文字。private Handler m...
2018-08-31 15:36:43
227
原创 HashMap中几点需要注意的地方
HashMap本身的算法保证,会使key hash之后下标的分布尽可能的分散2倍扩容的做法是为了保证分散性,扩容完成之后,要把原来的节点移动一下,链表的位置要么是原来的位置不动,要么是原来的位置+oldCap位置相同时,后面的节点用链表挂在下面,当链表长度超过8个时,将链表转为用红黑树存储(jdk1.8之后)get的时候回根据hash和key共同决定取哪个,先看hash是否相同,再看key...
2018-06-21 10:48:46
1163
原创 Android finish()自动回调时机,Activity资源释放逻辑放在onDestroy中一定合适吗
首先看Google对finish()的描述, Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult(). 当activity完...
2018-05-10 11:37:59
3496
2
原创 Java基础提高 String与String.intern()
首先看一段代码,思考运行结果String s0 = new String("ab");String s1 = new String("ab");String s2 = "ab";String s3 = "a" + "b";String s4 = "b";String s5 = "a" + s4;System.out.println(s1.intern(
2018-05-07 15:10:29
212
原创 Android 消息路由框架
本文主要介绍消息路由框架的机制和原理消息框架的作用 可以方便在不同moudle之间的通信,减少互相依赖路由机制的原理MoudleA通过消息路由来分发一个任务到MoudleB,而避免MoudleA直接依赖MoudleB。 需要被执行的任务首先需要进行注册,任务id是唯一的,该注册可以通过写到类的static静态代码块当中,这样当该类被加载的时候这个任务便可以被注册。(后面...
2018-04-11 11:57:22
368
原创 Android如何在service中弹出对话框
最近又听人聊到Android能不能在service中弹出对话框的问题,于是总结一下 答案是肯定的,系统可以在低电量的时候弹出电量不足的提示,那么我们也可以按同样的方法做到 下面介绍在service中弹出对话框的两种方法:1.将dialog的Type设置为TYPE_SYSTEM_ALERT写一个service代码如下:public class DialogService ex...
2018-03-12 17:55:00
11104
原创 Android应用中的图片缓存策略
Android图片缓存的基本思路整理缓存方式主要分为网络缓存,内存缓存,文件缓存这里简单介绍一下后面两种的思路,使用内存缓存和使用文件缓存缓存的基本原理,将从网络中得到的图片存储在本地,避免再次使用时从网络重新加载,可以增快加载速度,减少网络流量的消耗
2018-03-08 17:33:36
372
原创 JsonObject toString() 输出键值对顺序研究
后台有一套接口,需要对传参进行排序,于是写了一套排序方法,在请求接口之前对所有参数排序,这里边用到了JsonObject及其自身的toString方法,测试过程中发现在一台android4.4系统的手机上程序运行不是预期结果,于是有了下面的研究
2018-02-23 16:23:22
14612
2
原创 Android中实现虚线边框包裹文字的两种方式
下面介绍实现下图所示效果的两种方式: 第一种是通过写shape布局文件来实现给TextView设置background时引用此布局文件即可实现效果,shape布局文件代码如下: <?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/...
2016-09-05 21:45:51
3759
原创 设置Intent.FLAG_ACTIVITY_NEW_TASK和Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED对Activity Stack的影响
这是一个小区广播问题引发的对Intent.FLAG_ACTIVITY_NEW_TASK和Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED的思考一、问题描述-删除未读广播消息后,进入短信-menu小区广播还会弹出广播提示框预制条件 手机有一条未读广播消息测试步骤:1.进入设置-更多-小区广播 删除此条消息2.进入短信-Menu-小区广播预期结
2016-06-27 22:54:20
13403
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人