
Android进阶
文章平均质量分 96
Android开发艺术探索一些章节的学习笔记
休闲的灵魂
我永远坚信
展开
-
三方库源码学习3-LeakCanary
LeakCanary源码分析一.在哪里初始化在老版本的LeakCanary中,在集成LeakCanary时需要我们在Application中调用LeakCanary.install(this);进行初始化工作。但是在新版本中只需要我们添加依赖后,就可以直接监听Activity,Fragment等的内存泄露问题了。那么它的初始化工作是在那执行的呢?它在 AppWatcherInstaller类的 onCreate()自动完成了初始化工作。internal sealed class AppWatcher原创 2021-07-21 10:36:56 · 420 阅读 · 3 评论 -
三方库源码学习2-Retrofit
文章目录一.参考博客二.Retrofit的介绍三.什么是动态代理四. Retrofit.Create()方法五. ServiceMethod六. HttpServiceMethod注解1:OkHttpCall一.参考博客三方库源码学习-1 :OkHttp一定能看懂的 Retrofit 最详细的源码解析!三方库源码笔记(7)-Retrofit 源码详解二.Retrofit的介绍官方介绍: A type-safe HTTP client for Android and Java. 这说明 Retr原创 2021-06-04 16:41:30 · 352 阅读 · 2 评论 -
三方库源码学习-1 :OkHttp
整体框架 :什么,还有这么简单的OkHttp源码分析?Dispatcher过程 :三方库源码笔记-OkHttp 源码详解OPPO互联网技术 :OkHttp源码深度解析一.OkHttp的源码框架OkHttp在请求网络的时候,是由okHttpClient执行一个 newCall 方法,将用户编写的request传入,然后就可以执行excuted或者enqueue方法进行网络请求。其中的关键就是 newCall 方法,它返回的是一个Call类型的接口,实际的实现是 RealCall ,也就是说我们发起原创 2021-05-31 17:31:17 · 280 阅读 · 0 评论 -
Android IPC —— AIDL的原理
文章目录1.Bindler,AIDL,Messenger的关系2. AIDL的使用1.Bindler,AIDL,Messenger的关系2. AIDL的使用原创 2021-05-13 19:20:07 · 3117 阅读 · 13 评论 -
Android的系统架构的认识
文章目录1.Android 系统架构1.1 Kernel 层(Linux内核层)1.2. Native层(系统运行库层)1.3. Framework (应用框架层)1.4. App(应用层)2.Android 系统启动架构2.1 Loader 层2.2 Kernel 层2.3 Native 层2.4 Framework 层Zygote进程System Server 进程Media Server 进程2.5 App层Syscall && JNI1.Android 系统架构Android底层原创 2021-05-12 15:19:18 · 1394 阅读 · 3 评论 -
Android IPC —— IPC 机制的简介及Bindler
文章目录1.进程的概念2.Android中为什么一个APP会需要多个进程3.为什么要进行进程间通信4.IPC原理4. Binder的简单介绍4.1 简介4.2 Binder原理简介4.2.1 Android 系统整体架构简介3.Android中的IPC方式1.进程的概念进程一般指一个执行单元,在pc和移动设备上指一个程序或者一个应用。进程中可以包含多个线程,线程是cpu调度的最小单位。2.Android中为什么一个APP会需要多个进程分散内存占用Android对于一个进程所占用的内存是有限原创 2021-05-12 18:53:37 · 1442 阅读 · 3 评论 -
Android线程和线程池(4)——线程池的原理
目录1.线程池的使用2.线程池的工作原理简析3.线程池是什么时候创建线程的4.工作流程5. 线程池在业务中的实践1.线程池的使用Android线程和线程池(3)——线程池的使用2.线程池的工作原理简析若程池中的线程数量未达到核心线程数,则会直接启动一个核心线程执行任务。若线程池中的线程数量已达到或者超过核心线程数量,则任务会被插入到任务列表等待核心线程空闲来执行。若任务无法插入到任务列表中,往往由于任务列表已满,此时如果线程数量未达到线程池最大线程数,则会启动一个非核心线程执行任务;线原创 2021-03-27 22:02:49 · 374 阅读 · 0 评论 -
Android线程和线程池(3)——线程池的使用
目录1.线程池的介绍1.1 使用线程池的原因1.2 使用线程池的好处2.线程池的使用说明2.1 构造方法2.2 参数解释2.3 线程池状态3.使用线程池3.1 使用的流程3.2 线程初始化3.3 线程池关闭3.4 线程池容量调整3.5 具体的demo4.功能线程池4.1 定长线程池(FixedThreadPool)4.2 定时线程池(ScheduledThreadPool )4.3 可缓存线程池(CachedThreadPool)4.4 单线程化线程池(SingleThreadExecutor)4.5原创 2021-03-27 21:59:37 · 477 阅读 · 0 评论 -
Android线程和线程池(2)——IntentService
文章目录一.IntentService的介绍二.IntentService的使用姿势三.源码分析四.面试题归纳一.IntentService的介绍很多时候我们创建Service就是希望Service能在后台进行一些耗时操作,但是又由于Service默认是运行在主线程的,我们不太方便直接进行耗时操作,然后每次进行耗时操作我们都得手动创建新的线程,显得很麻烦。所以就会有IntentService,它内部是帮我们创建了一个HandleThread,以及对应的Handler,并通过onStart方法把inte原创 2021-03-23 18:39:46 · 280 阅读 · 0 评论 -
Android线程和线程池(1)——线程的介绍和HandlerThread
文章目录1.Android线程的基本介绍2.AsyncTask3.HandlerThread工作原理使用步骤1.Android线程的基本介绍线程在Android中是一个很重要的概念,从用途上说,线程分为主线程和子线程。主线程主要处理和界面相关的事情,而子线程则往往用于执行耗时操作。 除了Thread本身除外,在Android中可以扮演线程角色的的还有很多,比如AsyncTask和IntentService,同时HandlerThread也是一种特殊的线程。尽管他们的表现形式有别于传统的线程原创 2021-03-23 18:39:12 · 562 阅读 · 0 评论 -
Android的消息机制
文章目录一.消息机制的概述1.模型2.流程概述3.典型实例二.Android的消息机制分析1.ThreadLocal一.消息机制的概述Android的消息机制主要指Handler的运行机制以及Handler所附带的MessageQueue和Looper的工作过程。主要用于UI线程和子线程之间的交互。 一般情况下,出于安全的考虑,所有与UI控件的操作都要放在主线程及UI线程,而一些耗时操作应当放在子线程中。当在子线程中完成耗时操作并要对UI控件进行操作时,就要用Handler来控制了。&n原创 2021-03-17 21:52:47 · 246 阅读 · 0 评论 -
Android 动画深入分析(三)——属性动画的高级使用及工作原理
文章目录一.前言二. 对任意属性做动画用一个类来包装原始对象,间接提供get和set方法采用ValueAnimator,监听动画过程,自己实现属性的改变三.TypeEvaluator(估值器)和一.前言前面已经介绍过了逐帧动画,补间动画,和一些属性动画的简单使用,接下来介绍一下属性动画的高级使用及工作原理。 属性动画可以对任意对象进行动画操作,接下来我们就使用任意对象来实现动画。二. 对任意属性做动画给Button加一个动画,让button的宽度从当前值增加到500px,即对butto原创 2021-03-13 11:03:32 · 378 阅读 · 0 评论 -
Android 动画深入分析(二)——属性动画的简单使用
文章目录一.前言二.补间动画的缺陷三.属性动画的优势四.三种常见的属性动画类1.ValueAnimator2.ObjectAnimator3.AnimatorSet五.Animator监听器六.使用XML编写动画一.前言自Android 3.0版本开始,系统给我们提供了一种全新的动画模式,属性动画(property animation),它的功能非常强大,弥补了之前补间动画的一些缺陷,几乎是可以完全替代掉补间动画了。关于 逐帧动画,补间动画可以参看这篇博客Android 动画深入分析(一)——逐帧动原创 2021-03-13 11:01:02 · 303 阅读 · 0 评论 -
Android 动画深入分析(一)——逐帧动画,补间动画
文章目录一.前言二.逐帧动画三.补间动画补间动画的介绍补间动画的使用一.前言Android的动画大致分为三种 ,分别是 逐帧动画 ,补间动画 ,属性动画二.逐帧动画逐帧动画的工作原理很简单,其实就是将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起来进行播放,类似于动画片的工作原理。 步骤:在res/drawable目录下定义一个XML文件,根节点为系统提供的animation-list,然后放入定义更好的图片;使用AnimationDrawable类播放第一步定义好的D原创 2021-03-13 10:59:12 · 635 阅读 · 0 评论 -
Android View(五)——自定义View
文章目录一.前言二.自定义View的分类1.继承View重写onDraw方法2.继承ViewGroup派生出特殊的Layout3.继承特定的View(比如TextView)4.继承特定的ViewGroup(比如LinearLayout)三.自定义View须知四.自定义View示例1.继承View重写onDraw方法1.1自定义属性1.2完整代码2.继承ViewGroup派生特殊的Layout一.前言自定义View的实现需要我们对View的层次结构,事件分发机制和View的工作原理等知识有较好的掌握,具体原创 2021-03-10 21:34:34 · 2496 阅读 · 2 评论 -
Android View(四)——View的工作原理
文章目录一.初识ViewRoot 和 DecorView二.View的工作流程概述View绘制过程中的一些方法介绍三.理解MeasureSpec1.MeasureSpec是干什么的?2.MeasureSpec的定义3.MeasureSpec和LayoutParams的对应关系3.1 顶级View(DecorView)一.初识ViewRoot 和 DecorViewDecorViewDecorView是整个Window界面的最顶层View。DecorView只有一个子元素为LinearLayout。代原创 2021-03-09 21:58:23 · 502 阅读 · 0 评论 -
Android View(三)——View的滑动冲突
文章目录一.滑动冲突的原因二.常见的冲突场景:三.滑动冲突的处理规则1.场景1的处理规则2.场景2的处理规则3.场景3的处理规则四.滑动冲突的解决方法1.外部拦截法1.1模板代码:1.2 实例代码:2.内部拦截法2.1模板代码:2.2实例代码:五.完整实例一.滑动冲突的原因在界面中当有内外两层View同时可以滑动的时候,这个时候就会产生滑动冲突。二.常见的冲突场景:场景1场景2场景3三.滑动冲突的处理规则1.场景1的处理规则对于场景1的处理规则是,当用户左右滑动时,需原创 2021-03-08 11:27:40 · 405 阅读 · 0 评论 -
Android View(二)——View的事件分发机制
文章目录一.Activity的层级结构二.事件分发的基础认识1.事件分发是什么2.事件分发过程中的三个重要方法二.事件分发的过程了解1.图解:1.1基本过程图解1.2 关于ACTION_MOVE 和 ACTION_UP2. demo验证上述过程三.onTouch、onClick、onLongClick的调用顺序四.事件分发源码分析1.Activity的事件分发2.ViewGroup的事件分发机制3.View的事件分发机制五.事件分发的总结六.参考资料一.Activity的层级结构在了解View的事件分发原创 2021-03-06 21:46:04 · 1956 阅读 · 7 评论 -
Android View(一)——View的基础知识
目录一.View的基础知识1.什么是View2.View的位置参数3.MotionEvent4. TouchSlop5. VelocityTracker6. GestureDetector一.View的基础知识1.什么是ViewView是一种界面层的控件的一种抽象,它代表了一个控件,是Android中所有控件的基类。2.View的位置参数3.MotionEvent在我们触摸屏幕的过程中,可以分为三种情况,分别是按下、滑动、弹起。Android中为我们封装好了一个MotionEvent类,使原创 2021-03-04 15:30:47 · 6893 阅读 · 1 评论