Android基础
文章平均质量分 81
OneDeveloper
当你无所事事的时候,就得好好想想还缺少什么!!!
展开
-
Android ConstraintLayout 设置子 view maxWidth 是父 ConstraintLayout width 的百分比
话不多说,直接上代码:<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://sc原创 2020-06-19 21:48:49 · 5625 阅读 · 0 评论 -
AsyncTask 笔记整理
源码基于 Android API 251、概述AsyncTask 是一种轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新 UI。AsyncTask 是一个抽象的泛型类。一般需要重写下面四个方法:// 1、在线程池中执行,用于执行耗时的异步任务@WorkerThreadprotected abstract Result doInB...原创 2019-05-31 00:11:05 · 517 阅读 · 0 评论 -
Android 滑动冲突处理笔记
整理自:《Android 艺术探索》1、几种场景外部滑动与内部滑动方向不一致外部滑动与内部滑动方向一致上述两种情况的嵌套2、解决冲突的前提制定好规则,即什么情况由外部的父容器拦截处理,什么时候分发给内部的子控件处理。3、解决方法(1)外部拦截法即事件先经过父容器的拦截处理,如果父容器需要此事件就拦截,否则就分发给子控件。该方法的实现需要重写父容器的 onInterceptT...原创 2019-06-05 13:06:29 · 489 阅读 · 0 评论 -
关于Android 的 onSaveInstanceState() 与 onRestoreInstanceState()
参考文章:onSaveInstanceState和onRestoreInstanceState详解onSaveInstanceState() 与 onRestoreInstanceState() 是关于 Activity 中状态的保存与恢复的方法。当然在 View 中也存在这一组方法,而 Fragment 则比较特殊,只有 onSaveInstanceState() 而没有 onRestor...原创 2019-05-31 20:08:57 · 416 阅读 · 0 评论 -
Android ANR 笔记整理
主要参考文章:看完这篇 Android ANR 分析,就可以和面试官装逼了!文中涉及到的源码基于 Android API 251、概述ANR(Application Not Responding),指应用程序无响应。当某些情况下,应用主线程超过预定时间能未能得到有效响应或者响应时间过长,都会造成 ANR。ANR 机制主体实现在系统层。所有与ANR相关的消息,都会经过系统进程 (syste...原创 2019-05-29 00:00:49 · 533 阅读 · 0 评论 -
HandlerThread 源码整理
源码基于 Android API 25HandlerThread 相比于普通的 Thread,其内部会多维护一个 Looper,因此也多维护着一个消息队列,从而可以直接使用,而不用像普通的 Thread 那样,还要自己去处理 Looper。然后通过 getLooper() 获取对应的 Looper,从而使用对应的 Handler。public class HandlerThread exte...原创 2019-05-29 15:42:37 · 171 阅读 · 0 评论 -
IntentService 笔记整理
主要参考自:《Android 开发艺术探索》IntentService 是一种特殊的Service,它继承了 Service 并且它是一个抽象类,因此必须创建它的子类才能使用 IntentService。其内部维护了一个 Looper 和一个 Handler。private volatile Looper mServiceLooper;private volatile ServiceHan...原创 2019-05-29 20:34:46 · 184 阅读 · 0 评论 -
Android Crash 笔记整理
内容摘抄自:《Android 开发艺术探索》Crash 即奔溃,一般是由于程序发生了异常,却没有捕获而导致的(即用 try-catch 语句捕获),crash 时,系统会 kill 掉对应的正在运行的程序,导致闪退或者提示用户程序已经停止运行的现象。Android 提供了关于处理该问题的方法,即 Thread.setDefaultUncaughtExceptionHandler()publ...原创 2019-06-02 20:18:40 · 307 阅读 · 0 评论 -
Android BroadcastReceiver 相关笔记整理
涉及源码版本为 Android API 25参照文章:1、《Android 开发艺术探索》2、BroadcastReceiver 全方位解析1、广播接收器的注册1.1 静态注册在 AndroidManifest.xml 里通过标签声明:<receiver // 定义系统是否能够实例化这个广播接收器,如果为 false 的话,则系统无法实例化该接收器。 // 此时,就只...原创 2019-06-09 15:46:38 · 619 阅读 · 0 评论 -
Activity、Window、DecorView、ViewRootImpl(ViewRoot)
(1)Activity、Window、DecorViewWindow 是附属在 Activity 中的,其具体的实现是 PhoneWindow,每一个 Activity 都会有一个 Window。而 DecorView 又是附属在 PhoneWindow 中的。Window 用于在 Activity 中控制顶级 View 的外观和行为策略。而 DecorView 是由 Window 的实现...原创 2019-06-03 22:18:00 · 767 阅读 · 0 评论 -
View 工作原理笔记整理
主要摘抄自:《Android 开发艺术探索》参考文章:https://lrh1993.gitbooks.io/android_interview_guide/content/android/basis/custom_view.html1、View 的工作流程View 的工作流程主要指 measure(测量)、layout(布局)、draw(绘制)这三个流程。DecorView 作为顶级 ...原创 2019-09-16 23:45:19 · 273 阅读 · 0 评论 -
Android Context 笔记整理
本文 大部分内容摘抄自:https://lrh1993.gitbooks.io/android_interview_guide/content/android/basis/context.html源码版本为 Android API 251、概述Context 这一名词中文意思为 “上下文,背景”,在 Android 中,其作为一个包含运行时环境信息的上下文接口,它允许访问特定的应用程序的资...原创 2019-06-04 18:49:06 · 286 阅读 · 0 评论 -
Android IPC 之 Messenger 笔记整理
知识前提:Binder 理论部分笔记整理,以及 AIDL 的相关知识。参考文章:《Android 艺术探索》1、概述Android IPC 的途径之一就是使用 Messenger, 它可以在不同进程中传递 Message 对象,在 Message 中放入需要传递的数据,就可以实现在进程间传递。Messenger 底层基于 AIDL 实现,是一个轻量级的 IPC 方案。2、具体实现2....原创 2019-06-11 19:20:45 · 199 阅读 · 0 评论 -
LruCache 源码笔记整理
基于 Android API 25,android.util 包下 LruCache。基础补充:LinkedHashMap 笔记整理1、概述LRU 是 Least Recently Used 的缩写,即最近最少使用。而 LruCache 则是基于 LRU 算法实现的一个类,当缓存空间不足时,就会删除最老的元素(即最久没用过的),用于 Android 实现内存缓存。非线程安全的。2、构造...原创 2019-05-08 11:10:41 · 179 阅读 · 0 评论 -
ArrayMap 笔记整理
源码基于 API 25主要参考文章:面试必备:ArrayMap源码解析1、概述截图自:面试必备:ArrayMap源码解析在开始讲解源码之前,需要说明 ArrayMap 的底层实现结构,即两个数组:int[] mHashes; // 用于存储 key 对应的 hash 值Object[] mArray; // 根据映射规则,用于存储 key 和 value其中,mHashes ...原创 2019-05-04 22:24:55 · 2510 阅读 · 0 评论 -
SparseArray 笔记整理
参考文章:1、面试必备:SparseArray源码解析2、谈谈源码中的SparseArray1、概述概括的说,SparseArray<E> 是用于在 Android 平台上替代 HashMap 的数据结构。更具体的说,是用于替代 key 为 int 类型,value 为 Object 类型的 HashMap。和 ArrayMap 类似,它的实现相比于 HashMap 更加...原创 2019-05-04 11:00:19 · 827 阅读 · 0 评论 -
有关RecyclerView.Adapter 的 notifyItemChanged(int position, @Nullable Object payload) 方法
今天在看某个项目的源码的时候,无意间看到了 RecyclerView.Adapter 的 notifyItemChanged(int position, @Nullable Object payload) 方法,以前没有见过,后来自己查来之后,才知道这个是与 RV 的 Item 局部刷新有关的。平时一般是用 notifyItemChanged(int position) 方法来进行局部刷新,但...原创 2018-03-28 16:11:17 · 20544 阅读 · 8 评论 -
Android 中的“前台”与“后台”相关定义整理
“前台”指前台进程,“后台”指后台进程。1、用于服务限制目的如果满足以下任意条件,应用将被视为处于前台:具有可见 Activity(不管该 Activity 已启动还是已暂停)。具有前台服务。另一个前台应用已关联到该应用(不管是通过绑定到其中一个服务,还是通过使用其中一个内容提供程序)。 例如,如果另一个应用绑定到该应用的服务,那么该应用处于前台: IME壁纸服务通...原创 2018-04-16 23:22:44 · 6315 阅读 · 0 评论 -
用 layer-list 实现指定边际的边框
最近在开发的时候,遇到一个有关 UI 的需求,大概就是要实现一个背景图,存在左、右、下方向上的边框,并且下边两个角要为圆角。示例的效果图如下: 其中黑色的为边框。然后就是具体的实现逻辑,使用的就是 shape,借助 layer-list:<layer-list xmlns:android="http://schemas.android.com/apk/res/android...原创 2018-08-21 12:57:04 · 1119 阅读 · 0 评论 -
在 styles.xml 中使用 ConstraintLayout 的属性
在 styles.xml 中如果要使用 ConstraintLayout 的属性,那么直接使用就行了,不用像在布局文件中那样设置命名空间,如下:<item name="layout_constraintWidth_percent">0.5</item>参考:https://segmentfault.com/a/1190000014612730另外,自定义属性...原创 2018-08-28 20:33:59 · 958 阅读 · 4 评论 -
ConstraintLayout —— 约束布局 知识点整理
参考文章: 1、Android官方文档 2、约束布局(ConstraintLayout)1.1.2 版本的新特性 3、android ConstraintLayout使用详解 4、Android ConstraintLayout+ConstraintSet实现动画效果ConstraintLayout 的版本是 1.1.xlayout_constraintXXX_toYYYO...原创 2018-08-25 10:43:25 · 15264 阅读 · 1 评论 -
《 Android 开发艺术探索》 View 的位置参数与使用 scrollTo/scrollBy 进行滑动
在《Android开发艺术探索》中有提到过,View 的位置主要由其四个顶点来决定,分别对应 View 的四个属性:top、left、right、bottom,且这四个点是相对于 View 的父容器来说的,是一种相对坐标。另外,在 Android 3.0 以后,View 还增加了几个参数:x、y、translationX、translationY。x、y是 View 左上角相对于父容器的坐标,...原创 2018-09-11 16:34:34 · 284 阅读 · 0 评论 -
Fragment调用 setRetainInstance 的原理
转载自:http://blog.csdn.net/gaugamela/article https://blog.csdn.net/Gaugamela/article/details/56280384Fragment 具有属性 retainInstance ,默认值为 false。 当设备旋转时,fragment 会随托管 activity 一起销毁并重建(重建的时候,是通过反射 frag...转载 2018-09-05 15:01:12 · 791 阅读 · 0 评论 -
点击事件分发机制 关键源码笔记
请注意,涉及到的源码 SDK 版本为 27,不同版本可能存在偏差,一切以具体的源码为准。文字部分主要参考自 《Android 开发艺术探索》,源码部分的解读主要参考自 Android 触摸事件机制(四) ViewGroup中触摸事件详解,但是也加入了自己的思考。首先,需要明确的就是,同一个事件序列,就是一个连续的 ACTION_DOWN -&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; A原创 2019-09-09 22:47:31 · 7340 阅读 · 2 评论 -
ThreadLocal 实现原理总结
ThreadLocal 用于在不同线程中互不干扰的存储并提供数据。这里不对源码进行深究,只浅显的对实现原理进行了解。本次涉及到的源码为 Source for Android 27.ThreadLocal 的实现,需要借助到 ThreadLocalMap。需要提前交代的:在一个 Thread 实例内部,都有一个 threadLocals 成员变量(ThreadLocalMap 类型),而...原创 2018-10-16 13:09:41 · 949 阅读 · 0 评论 -
Handler 笔记总结
有关 Handler 实现线程切换的原理笔记总结...原创 2018-10-22 17:37:41 · 446 阅读 · 0 评论 -
屏幕刷新机制 笔记整理
参阅文章:Android 屏幕刷新机制需要先仔细阅读一下原文,我这里只是把一些讲解步骤抽炼出来,使得看起来更直观。根据原文可以知道, View#invalidate() 最终会走到 ViewRootImpl#scheduleTraversals()每个 Activity 对应一颗以 DecorView 为根布局的 View 树,但其实 DecorView 还有 mParent,而且就是 V...原创 2018-11-09 21:37:53 · 1169 阅读 · 1 评论 -
Android 实现序列化的两种方式 笔记整理
笔记内容基于:《Android 开发艺术探索》额外参考博客:https://blog.csdn.net/qq_35246620/article/details/77686098序列化的作用:在网络上传送对象的字节序列;把对象的字节序列永久地保存到本地。静态变量属于类不属于对象,不会参与序列化过程,用 transient 关键字标记的成员变量也不会。1、基于 Java 的 Ser...原创 2018-12-11 22:03:37 · 588 阅读 · 0 评论 -
Android LayoutInflater 相关笔记
阅读文章: 1、Android LayoutInflater原理分析,带你一步步深入了解View(一)1. 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。2. 如果root不为null,attachToRoot设为true,则会给加载的布局文件的指定一个父布局,即root。3. 如果root不为null,attachToRoot设为false,...原创 2018-03-26 17:00:06 · 177 阅读 · 0 评论