- 博客(13)
- 资源 (10)
- 收藏
- 关注
原创 Retrofit源码详解
一.Retrifit代码详解1.使用方式Retrofit retrofit = new Retrofit.Builder(). baseUrl("https://www.wanandroid.com/"). addConverterFactory(GsonConverterFactory.create()). build(); //1动态代理生成代理接口代理实例 WanAndroidApi wanAndroidApi=retrofit.create(WanAndroidApi.class); //2
2021-04-14 12:15:18
263
原创 java集合详解
一.java集合详解1.java集合主要分为一下三类:(1)List(有序的列表)允许放重复的数据,重点介绍一下4种ArrayList: 数组实现,查询快,删除慢,线程不安全(速度快) LinkedList:双向链表实现,查询慢,删除快,线程不安全(速度快) Vector: 数组实现,查询快,删除慢,线程安全(速度慢) Stack: 栈结构,后进先出,继承Vector,数组实现,查询快,删除慢,线程安全(速度慢) (2)Set 存储不可重复的值的集合 HashSet: HashMap实现,唯一无
2021-02-24 14:45:06
179
原创 Android 线程池源码分析
一.线程池介绍普通的线程创建很简单类似下面的结构创建线程Thread thread = new Thread(){ @Override public void run() { super.run(); }};thread.start();为什么使用线程池呢?线程的创建和销毁有一定的开销,比如大量创建销毁线程消耗更大,当需要操作大量的异步任务的时候就需要少点的低频率的创建和销毁线程,这个时候就会使用线程池,方便管理和减少线程的频繁的创建和销毁。形如下面 f
2020-11-13 10:51:34
276
原创 AsyncTask源码分析
一.AsyncTask介绍AsyncTask asyncTask = new AsyncTask() { @Override protected Object doInBackground(Object[] objects) { return null; } };asyncTask.execute();通用的AsyncTask的具体使用,这个大家都很熟悉,我就不再赘述,我主要从源码层次分析一下AsyncTask怎么从异步线程转到主线程,怎么控制串行操
2020-11-10 09:53:16
124
原创 View的工作流程
view的工作流程主要分为三个1.measure过程,测量view的宽度高度2.layout过程,确定位置3.draw绘制页面的,View的整个绘制过程从ViewRootImpl的performTraversals()这个是整个View绘制的入口//伪代码只标注重要的部分private void performTraversals() { //这个是整个measure的入口 实际调用的是view的measure方法 performMeasure(childWidthMeasureS..
2020-08-12 10:33:45
221
原创 Android 滑动冲突解决的办法
1.外部拦截//外部拦截的话只需要复写onInterceptTouchEvent@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) { boolean intercepted = false; switch (ev.getAction()){ case MotionEvent.ACTION_DOWN: //这个时候返回false,事件才能交给子view 进行处理
2020-07-21 20:31:20
148
原创 Android 事件分发机制
1.事件分发机制事件分发简单而言就是点击事件怎么从Activity流转到ViewGroup,然后流转到View,最后这个点击事件有谁处理,怎么处理?时间分发有三个重要的方法,dispatchTouchEvent(分发事件的方法),onInterceptTouchEvent(拦截事件的方法),onTouchEvent(处理事件的方法)搞清楚Activity,ViewGroup和View的这三个方法,事件分发的机制也就了解了,咱们一个类一个类的进行讲解,首先深呼吸放松一下,然后进入代码的世界,大家慢慢的看。
2020-07-18 16:17:00
196
原创 Android Mvp模式
1.MVP 模式Model:复杂的数据处理和网络请求等业务逻辑的操作 View:主要负责页面的显示 Presenter:主持层,拥有Model和view的对象可以控制Model 进行数据处理反馈给view层,是一个中间枢纽的作用。 2.mvp架构图 从上面的图中看到Persenter层完全隔离View 和model层,view要进行操作的时候,调用presenter,presenter持有view的引用和model的引用,然后判断调用什么Model,进行具体的业务处理,model处理完成之后,把结.
2020-05-21 11:15:00
827
原创 Glide源码细节分析
1.Glide框架介绍Glide框架是个图片加载框架,平时用的最多,功能最强大的图片加载框架,他对比universalimageloader 增加了Acitivyt和Fragment的生命周期的管理,也增加了一级缓存,Glide源码比ImageLoader的源码复杂很多,完全针对接口编程,导致很多方法很难找见对应实现类的入口,网上介绍Glide的代码个人感觉结构不是很清晰,分析的也不是重点,我对整个Glide做了一个详细的梳理,整理了一下大致脉络,下面大家跟我一起一点点剖析Glide的代码,Glide加载
2020-05-19 19:55:24
312
原创 Android Handler机制源码细节实现分析
1.Handler机制介绍Handler机制主要用于线程通信,handler负责把message(消息)发送到MessageQueue(消息队列)里面,每个线程对应一个looper,不停的从消息队列取出消息,然后发送给handler ,交个它去处理消息。一个线程对应一个looper,一个looper对应一个消息队列。2.Handler线程通信代码Thread hanMeiMeiThread = new Thread("哈哈") { @Override public void run()
2020-05-19 16:54:12
296
原创 Android Mvc 模式
1.Mvc 介绍 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。 model:模型层主要是处理
2020-05-15 10:17:14
1246
原创 android创建多个Android AlarmManager遇到的坑
String action = "action"+id;IntentFilter intentFilter = new IntentFilter(action);Util.getAppliction().registerReceiver(receiver, intentFilter);alarmManager = (AlarmManager) Util.getAppliction().ge...
2019-07-27 15:07:50
751
原创 设计模式1单例设计模式
public class Sigleton { //懒汉式单例模式 3种 private static Sigleton instance; //第一种懒汉式设计模式 //只有需要的时候才会创建实例线程不安全的,不推荐使用 public static Sigleton getInstance1(){ if(instance==null){...
2018-11-24 17:16:40
116
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人