流程机制解析
文章平均质量分 56
流程机制解析
生来如风
这个作者很懒,什么都没留下…
展开
-
滑动冲突如何解决
文章目录1、外部拦截法2、内部拦截法1、外部拦截法场景:外部滑动方向与内部滑动方向不一致。如,HorizontalScrollView嵌套RecyclerView。为什么不用ViewPager嵌套RecycleView?那是因为ViewPager内部已经解决这种滑动冲突了。重写父容器的onInterceptTouchEvent方法,子View不用做任何修改2、内部拦截法场景:外部滑动方向与内部滑动方向一致。如,垂直的ScrollView嵌套RecyclerView。需要改变事件的分发顺序,原创 2021-09-04 20:44:11 · 236 阅读 · 0 评论 -
图片的三级缓存
文章目录一、三级缓存1、大概2、底层实现一、三级缓存1、大概图片的三级缓存:内存缓存;本地缓存;网络缓存2、底层实现内存采用LruCache,其内部通过LinkedhashMap来持有外界缓存对象的强引用,LruCache的机制是存储最近、最后使用的图片,如果LruCache中的图片大小超过了其默认大小,则会将最老、最远使用的图片移除出去...原创 2021-09-03 20:16:03 · 707 阅读 · 0 评论 -
apk体积优化
文章目录一、如何减少apk体积1、将图片转换成webp2、去除多语言3、只保留armeabi-v7a4、移除和压缩无用资源(1)Link(2) shrinkResources(3)开启严格模式并自定义要保留的资源5、开启混淆(上线应用都会去做的)6、减少引入的第三方库体积7、AndResGuard微信资源压缩方案(只针对资源文件)8、Aconfont9、动态下发so库二、App Bunlder(针对国外应用)三、如何动态下发so库一、如何减少apk体积1、将图片转换成webp将图片资源转换为webp原创 2021-10-14 08:55:17 · 726 阅读 · 0 评论 -
RecyclerView的缓存机制
文章目录一、四级缓存一、四级缓存RecycleView总共有四级缓存一级缓存:Scrap,有两个ArrayList集合变量,一个存储当前还在屏幕中的ViewHolder,另一个存储数据被更新的ViewHolde二级缓存:CacheViews,默认大小为2,通常用来存储预取的ViewHolder,同时在回收ViewHolder时,也可能会存储一部分的ViewHolder三级缓存:ViewCacheExtension,自定义缓存【是空实现,一般都不会去实现它】四级缓存:RecycledViewPo原创 2021-04-17 09:44:12 · 1222 阅读 · 0 评论 -
AS的build过程(apk打包过程)
步骤:第一步:使用AAPT工具打包项目中的AndroidManifest.xml文件和布局文件XML资源文件,生成相应的R.java文件第二步:使用AIDL工具去处理aidl文件,生成.java文件第三步:使用JavaC编译Java文件,生成对应的.class文件第四步:使用dex工具,将.class文件转换成Android DVM/ART支持的.dex文件第五步:使用apkbuilder工具,打包生成未签名的.apk文件第六步:使用Jarsigner工具,将未签名的.apk文件进行签名第七步原创 2021-04-17 10:04:20 · 3040 阅读 · 1 评论 -
View的绘制流程
文章目录一、流程一、流程(1)View的绘制流程是从ViewRootImpl的performTraversals()开始的,在该方法内部会依次调用performMeasure()、performLayout()、performDraw()方法,(2)performMeasure()方法中会调用View的measure()方法,View的measure()方法中又会调用View的onMeasure()方法,在View的onMeasure()方法则会对所有子元素进行测量。(3)performLayout原创 2021-08-31 23:37:20 · 498 阅读 · 0 评论 -
Binder机制
文章目录一、了解二、整个流程一、了解Binder通信机制采用C/S架构,其框架中主要有4个角色,Client、Server、Service Manager、Binder驱动,其中Client、Server、Service Manager运行在用户空间,Binder驱动运行在内核空间。Client代表客户端进程,Server代表客户端进程提供各种服务,如音视频等。Service Manager用来管理各种系统服务。Binder驱动提供进程间通信的能力。二、整个流程首先Server进程向Bi原创 2021-04-19 09:08:52 · 189 阅读 · 1 评论 -
Android事件分发机制
- dispatchTouchEvent():分发事件- onIntercepteTouchEvent():拦截事件- onTouchEvent():处理事件1、当一个事件发生时,事件首先会传递到Activity的dispatchTouchEvent()方法中,而每一个Activity都持有一个Window对象,但是Window是一个抽象类,这里的Window指的就是PhoneWindow,它是在Activity的attach()方法中创建出来的,所以Activity的dispatchTouchEv原创 2021-08-31 23:30:53 · 74 阅读 · 0 评论 -
Android消息机制(Handler)
知道的都知道,不知道的慢慢了解文章目录1、是什么?2、组成①操作流程②干什么的MessagQueue:底层数据结构是单链表Looper:子线程使用Handler的三步骤Q:死循环卡死主线程?Q:为什么主线程不用做以上操作?ThreadLocalThreadLocalMap为什么一个Thread只有一个Looper?线程和Handler、Looper、MessageQueue的关系3、内存泄漏Q:使用Handler如何避免内存泄漏?相关延伸Q:子线程如何正确的中断?Q:四大引用?Q:一般什么情况下会导致.原创 2021-04-13 08:57:37 · 183 阅读 · 0 评论 -
App启动流程
点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;system_server进程接收到请求后,向zygote进程发送创建进程的请求;Zygote进程fork出新的子进程,即App进程;App进程,通过Binder IPC向sytem_server进程发起attach Application请求;system_server进程在收到请求后,进行一系列准备工作后,再通过Binder IPC向App进程发送schedule.原创 2021-04-19 09:04:33 · 165 阅读 · 0 评论 -
自定义View的流程
文章目录一、步骤一、步骤1、自定义属性的声明和获取——分析需要的自定义属性,在res/values/attrs.xml定义声明,在layout文件中进行使用,最后在View的构造方法中进行获取2、onMeasure测量3、 onLayout(ViewGroup)布局4、onDraw()绘制5、dispatchTouchEvent()分发事件6、onInterceptTouchEvent拦截事件(ViewGroup)7、onTouchEvent处理事件...原创 2021-08-31 23:35:39 · 411 阅读 · 0 评论 -
一个APP安装到手机的过程
安装和卸载都是通过PackageManager,实质上是实现了PackageManager的远程服务PackageManagerService来完成具体的操作,所有细节和逻辑均可以在PackageManagerService中跟踪查看;所有安装方式殊途同归,最终就回到PackageManagerService中,然后调用底层本地代码的install来完成。一个apk文件在安装到手机过程中,涉及到如下几个目录:system/app —— 系统自带的应用安装目录data/app —— 用户程序安装的.原创 2021-04-17 10:00:54 · 1793 阅读 · 0 评论 -
Android的类加载器
文章目录一、前置了解二、类型一、前置了解Android平台上虚拟机运行的是dex字节码,对class文件优化后的产物。传统Class文件是一个Java源码文件生成一个.class文件,而Android是把所有Class文件进行合并,优化,然后生成一个最终的class.dex。目的是把不同class文件重复的东西只保留一份。如果我们的Android应用不进行分dex处理,最后一个应用的apk只会有一个dex文件。二、类型Android中常用的有两种类加载器,DexClassLoader和Path原创 2021-04-17 09:35:05 · 322 阅读 · 0 评论 -
Activity启动的流程
文章目录一、前置了解二、Activity启动的流程三、Q&A1、为什么是Zygote来孵化进程,而不是新建进程呢?一、前置了解init进程:init是所有linux程序的起点,是Zygote的父进程。解析init.rc孵化出Zygote进程Zygote进程:Zygote是所有Java进程的父进程,所有的App进程都是由Zygote进程fork生成的system_sever进程:system_sever是Zygote孵化的第一个进程。system_sever负责启动和管理整个Java fra原创 2021-04-17 20:47:14 · 472 阅读 · 0 评论 -
Android的UI刷新机制(Android屏幕刷新机制)
文章目录一、相关知识科普:二、流程:一、相关知识科普:显示系统中一般包括CPU、GPU、display三个部分,CPU一般负责计算数据,然后把计算好的数据交给GPU,GPU会对这些图形数据进行渲染,渲染后放在buffer里面存起来,最后display负责将buffer里的数据呈现到显示器中Android的刷新频率是60帧/秒,Android系统中每隔16.6ms会发送一次VSYNC(同步)信号,有可能会触发UI的渲染二、流程:(1)界面上任何一个View的刷新请求最终都会走到ViewRoot原创 2021-04-17 08:54:18 · 1274 阅读 · 0 评论