- 博客(18)
- 资源 (6)
- 收藏
- 关注
原创 ThreadLocal 工作原理
1.ThreadLocal 介绍首先,它是一个数据结构,有点像HashMap,可以保存"key : value"键值对,但是一个ThreadLocal只能保存一个,并且各个线程的数据互不干扰,它是一个以ThreadLocal对象为键、任意对象为值的存储结构。可以通过set(T)方法设置一个值,在当前线程下以get()方法获取到原先设置的值。ThreadLocal<String> threadLocal = new ThreadLocal();threadLocal.set("thre
2020-12-30 16:08:52 207 1
原创 进程间通信(IPC) 相关
通过引入相关问题来进行思考阐述:1.简述 IPC?IPC 就是指进程之间的通信机制,在 Android 系统中启动 Activity/Service 等都涉及跨进程调用的过程。2.Android中的IPC 方式有哪些:Bundle,文件共享,Messenger,AIDL,ContentProvider,Socket等3.如何开启Android中的多进程:(常规)在AndroidMenifest中给四大组件指定属性android:process。 (不常规)通过JNI在na
2020-12-30 14:19:34 118
原创 Okio原理解析
随着越来越多的应用使用OKHttp来进行网络访问,我们有必要去深入研究OKHTTP的基石,一套更加轻巧方便高效的IO库okio。一、OKIO的介绍:okio是大名鼎鼎的square公司开发出来的,其是okhttp的底层io操作库。其相对于原生的Java IO 读写,更具有(1)紧凑的封装 是对Java IO/NIO 的封装使用,支持文件读写,也支持Socket通信的读写,不需要再套上一系列的装饰类;(2) 使用简单 不用区分字符流或者字节流,也不用记住各种不同的输入/输出流,统统只有一个输入
2020-12-26 18:37:34 870
转载 Android深入理解RecyclerView的缓存机制
讲一下RecyclerView的缓存机制,滑动10个,再滑回去,会有几个执行onBindView。缓存的是什么?cachedView会执行onBindView吗?这两个问题都是关于缓存的,我就一起说了。1)首先说下RecycleView的缓存结构:Recycleview有四级缓存,分别是mAttachedScrap(屏幕内),mCacheViews(屏幕外),mViewCacheExtension(自定义缓存),mRecyclerPool(缓存池) mAttachedScrap(屏幕内).
2020-12-24 21:33:54 1261 1
原创 RecyclerView的局部更新
RecyclerView的刷新可以分为列表重新加载刷新、item刷新、item中局部刷新。对于前两种的刷新,都会是的列表刷新的时候闪烁一下,而后者则看不出列表有任何闪烁,并且,局部刷新能在一定程度上减少不必要的UI绘制渲染RecyclerView 数据刷新的几种方式,RecyclerView 真正的布局刷新的正确方式notifyDataSetChanged()刷新全部可见的itemnotifyItemChanged(int position)更新列表position位置上的数据可以调用n..
2020-12-24 14:08:49 1551 1
转载 Android View 滑动冲突解决方式以及原理
一. 滑动冲突场景以及产生原因产生滑动冲突的场景主要有两种:父ViewGroup和子View的滑动方向一致 父ViewGroup和子View的滑动方向不一致那为什么会产生滑动冲突呢,例如在父ViewGroup和子View的滑动方向一致的情况,我需要让两者都可以滑动。在事件分发机制中,ViewGroup的onInterceptTouchEvent方法默认情况下是返回false,也就是ViewGroup默认情况下是不会拦截事件的。当ViewGroup接收到事件时,由于不拦截事件,会去寻找能够处理事件
2020-12-24 10:27:27 590
转载 将Eclipse代码导入到AndroidStudio的两种方式
说到使用AndroidStudio,除了新建的项目,我们都会面临的问题是原先Eclipse的代码该怎么导入到AndroidStudio中使用。这方面相关的资料还比较少,自己摸索了一下,总结出这篇博客,希望能让开发者少走些弯路。OK,进入正题。Google为了让我们更加方便的使用AndroidStudio,提供了两种导入Eclipse代码的方式:一种兼容Eclipse,一种是全新的Android Gradle Project.这里,我们先从兼容模式说起。兼容模式这种模式下,保证了Eclips
2020-12-23 10:26:09 1457
转载 OkHttp原理解析
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录 目录 OkHttp介绍 使用流程 分发器 同步请求 异步请求 请求流程 分发器线程池 拦截器责任链 责任链模式 拦截器流程 拦截器详情 一、重试及重定向拦截器 二、桥接拦截器 三、缓存拦截器 四、连接...
2020-12-21 18:33:34 520
转载 彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法
转载自“腾讯Bugly(http://bugly.qq.com)”,个人日常记录学习使用导语Http 缓存机制作为 web 性能优化的重要手段,对从事 Web 开发的小伙伴们来说是必须要掌握的知识,但最近我遇到了几个缓存头设置相关的题目,发现有好几道题答错了,有的甚至在知道了正确答案后依然不明白其原因,可谓相当的郁闷呢!!为了确认下是否只是自己理解不深,我特意请教了其他几位小伙伴,发现情况也或多或少和我类似。为了不给大家卖关子,下面我贴出2道题,大家可以尝试解答下:以下为page.html.
2020-12-13 22:35:00 102
转载 Cookie、Session、Token那点事儿
前言:新公司项目中使用到了Cookie,在各大Android技术讨论群向前辈们取经讨论这cookie、session、token这仨哥们的时候,很多开发者说法不一各抒已见,所以是时候回顾下http基础以及总结开发经验了。本文重在科普分析Cookie、Session、Token的基本概念和应用场景;Okhttp框架下对Cookie的管理使用。文章如果写的不好请各位开发者老司机私聊或者在评论区指点提出issue。什么是Cookie?Cookie 技术产生源于 HTTP 协议在互联网上的急速发展。随着互联
2020-12-13 19:52:16 99
原创 StaticLayout的使用详解
在Android开发中,Canvas.drawText不会换行,即使一个很长的字符串也只会显示一行,超出部分会隐藏在屏幕之外。StaticLayout是android中处理文字的一个工具类,StaticLayout 处理了文字换行的问题。在Staticlayout的中构造参数有三个: public StaticLayout(CharSequence source, TextPaint paint, int width,
2020-12-10 15:32:58 1588 1
转载 第三方开源库 EventBus 源码分析和手写
EventBus官方介绍为一个为Android系统优化的事件订阅总线,它不仅可以很方便的在同线程中传递事件或者对象,还可以在不同线程中实现事件或对象的传递,用法比较简单,可以很好地完成一些在原生系统中的Intent,Handler等可以完成的工作,在Android开发过程中用途及其广泛。当然这里不介绍它的具体用法,只走源码,然后自己动手写一下加深映象。很多人都说用了观察者设计模式,如果非得要往上靠,只能说不是正常的观察者。当然我们也不用太关注,你就认为它是反射加注解。如果你会 RXjava 也可以用 RxB
2020-12-09 22:56:24 175
原创 Java异常简单处理
1.直接throw 抛出,不往下执行 /** * 直接throw 抛出 */ public static void main(String[] args) { String str = null; System.out.println("before"); checkNotNull(str); //1.直接抛出异常,不往下执行 System.out.println("after"); } p.
2020-12-07 23:29:23 136
原创 Android里循环执行定时常用两种方法
第一种:Handler+Runnable实现方式实现循环执行定时//1,首先创建一个Handler对象Handler handler=new Handler(); //2,然后创建一个Runnable对像Runnable runnable=new Runnable(){ @Override public void run() { // TODO Auto-generated method stub //要做的事情,这里再次调用此Runnable对象
2020-12-07 23:17:09 7672 1
原创 Gson & 对象
日常工作中,在调用相关接口时候,常会要求将一个对象封装成json字符串作为参数传递过去给服务端:往往使用方法如下: public String toJsonString(Object object) { if (object != null) { Gson gson = new Gson(); return gson.toJson(object); } return null; }为方便创建一个简单对象举例:public class Person { p
2020-12-07 23:09:18 279 1
转载 Android解惑之Handler为什么需要是static的
我们先来看一张Android Studio中的warning截图handler内存泄漏.png上面这段代码会引起内存泄漏(Memory Leak)。 为什么会引起内存泄漏? 我们都知道,非static的内部类会持有外部类的引用,举个类子来说,我们经常在一些内部类中显示跳转activity的时候,给Intent赋值的时候,第一个参数会写 外部类名.this ,这就是持有外部类的引用的很好表现。 同样,其他地方需要用到这个内部类的时候,也不能是直接new出来,因为为非static的,必
2020-12-02 18:42:12 641
转载 Java 泛型和object比较
方法返回值前的<T>的左右是告诉编译器,当前的方法的值传入类型可以和类初始化的泛型类不同,也就是该方法的泛型类可以自定义,不需要跟类初始化的泛型类相同我们通过一段代码比较来看下就明白了class Show<T> { public void print1(T t) { System.out.println(t); } public <T> void print2(T t) { System.out.println(t); }} pu.
2020-12-01 15:47:34 485
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人