
Framework
文章平均质量分 96
__Yvan
我就是我独一无二
展开
-
【Android Framework系列】第17章 Android Q沙箱模式(Scoped Storage)
App TargetSDK > 28 即 Android10(Q)及以上项目,Google限制了存储沙箱模式,在Android10(Q)以上的设备建议使用私有目录data/data,无法再直接访问外部SD卡存储目录,如需要使用外部SD卡存储目录则需要通过SAF、MediaStore接口访问,并且只能访问特定的外部SD卡存储目录,如Downloads、Documents、Pictures 、DCIM、Movies、Music、Ringtones原创 2023-09-23 16:29:01 · 2432 阅读 · 0 评论 -
【Android Framework系列】第16章 存储访问框架 (SAF)
本章节大概了解SAF框架,我们下一章将对Android Q的沙箱模式(Scoped Storage)进行介绍。原创 2023-09-23 11:06:42 · 5081 阅读 · 0 评论 -
【Android Framework系列】第15章 Fragment+ViewPager与Viewpager2相关原理
ViewPager只能横向滚动,对应不同的Adapter效果不一样。范围外fragments会保存在内存中(detach),但是fragment对应的View会被销毁,fragments对应的SavedState会保存,内存较大但页面切换更友好,适用于Fragment数量少的情况使用,范围外fragments不会保存在内存中(remove),View也会被销毁。只保存范围内fragments对应的SavedState。这个SavedState在Fragment的生命周期回调中供外部传参数。原创 2023-09-21 11:02:13 · 1198 阅读 · 0 评论 -
【Android Framework系列】第14章 Fragment核心原理(AndroidX版本)
Fragment是一个历史悠久的组件,从API 11引入至今,已经成为Android开发中最常用的组件之一。Fragment表示应用界面中可重复使用的一部分。Fragment定义和管理自己的布局,具有自己的生命周期,并且可以处理自己的输入事件。Fragment不能独立存在,而是必须由Activity或另一个Fragment托管。Fragment的视图层次结构会成为宿主的视图层次结构的一部分,或附加到宿主的视图层次结构。本章节主要探索Fragment的生命周期状态及事务管理。原创 2023-09-04 17:35:55 · 1333 阅读 · 0 评论 -
【Android Framework系列】第13章 SVG矢量图形自定义组件(绘制中国地图)
本章节我们来了解下什么是矢量图形,怎么通过实现图形的绘制,通过实现不规则的自定义控件,项目实现一个中国地图,实现每个省都能够点击,项目地址在文末请自取。与其他图像格式相比,使用的优势在于:一般是由 UI设计师来做,我们也需要大概了解一下:编辑SVG地址在线编辑SVGSVG语法教程地图数据矩形2.5 Path支持的指令:3 项目实战上面我们大概了解了是什么,有什么优势。接下来我们用实现一个中国地图的展示及点击选中省份的小项目来练练手。项目结构如上图所示:直接上代码R.layout.acti原创 2023-08-31 21:05:09 · 1676 阅读 · 2 评论 -
【Android Framework系列】第12章 RecycleView相关原理及四级缓存策略分析
RecyclerView是一款非常强大的widget,它可以帮助您灵活地显示列表数据。当我开始学习 RecyclerView的时候,我发现对于复杂的列表界面有很多资源可以参考,但是对于简单的列表展现就鲜有可参考的资源了。虽然RecyclerView的组成结构乍一看有些复杂,但是深入理解以后您会发现它其实非常简单明了。原创 2023-08-27 18:11:31 · 1578 阅读 · 2 评论 -
【Android Framework系列】第11章 LayoutInflater源码分析
的作用是把XML转化成对应的View对象,需要用或者获取加载时先判断是否是merge标签merge标签走递归方法rinflate,否则走作用是根据xml标签的名字去加载对应的View,使用的是反射的方法是设计出来灵活构造View的接口,可以用来实现换肤或者替换View的功能,同时也是用来做兼容和版本替换的接口。原创 2023-08-16 21:30:57 · 395 阅读 · 0 评论 -
【Android Framework系列】第10章 PMS之Hook实现广播的调用
到这里我们就完成了整个动态下发apk的调用及被调用,这里我们再稍微总结一下:主要通过HookPMS实现将动态下发的apk进行解析,将信息存储在PMS内,然后对PMS中装有信息的receivers集合拿到,程序(Client)发送广播给动态下发apk内定义好的广播(Server),该广播(Server)对程序(Client)作出回应,然后在程序(Client)接收回应(类似TCP的三次握手逻辑)。从而实现本章节对PMS进行Hook的目的。文章只做核心HookPMS代码思路的分析,这里是项目地址!原创 2023-08-14 21:25:28 · 716 阅读 · 2 评论 -
【Android Framework系列】第9章 AMS之Hook实现登录页跳转
本章节通过反射和动态代理对不同Android版本下AMS进行Hook,实现登录页面的跳转。原创 2023-08-01 16:39:22 · 1878 阅读 · 1 评论 -
【Android Framework系列】第8章 事件分发你真了解吗?
最后总结一下,事件分发就是事件从linux层通过驱动采集数据,底层使用epoll和inotify传递出来,FrameWork层通过InputReaderThread读取,通过InputDispatcherThread分发到WMS,WMS将事件传递到Activity,上层的Activity、ViewGroup、View之间事件的分发和消费。dev/inputlinux有提供相关的文件监控api,其中使用了inotify(能监控文件变化产生FD)和epoll(可以监控FD,以此配合完成文件的监控与监听)原创 2023-07-25 16:26:40 · 1213 阅读 · 1 评论 -
【Android Framework系列】第7章 WMS原理
简称WMS,是系统的核心服务,主要分为四大部分,分别是窗口管理窗口动画输入系统中转站和Surface管理。1.窗口管理:WMS是窗口的管理者,负责窗口的启动,添加和删除,另外窗口的大小也是由WMS管理的,管理窗口的核心成员有DisplayContent,WindowToken和WindowState。窗口的显示顺序、尺寸、位置, 最终都会反馈SurfaceFlinger。原创 2023-07-17 17:31:37 · 2747 阅读 · 1 评论 -
【Android Framework系列】第6章 AMS原理之Launcher启动流程
我们在上一章节【Android Framework系列】5章 AMS启动流程中简单的分析了,这一章节我们来了解一下,通过是怎么完成下面我们通过一起来看看本文基于Android10(Q)的源码做分析由【Android Framework系列】5章 AMS启动流程我们可以知道:我们就从方法开始继续分析:/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java这里为对象,而方法直接调用的是对象的该原创 2023-07-13 22:20:59 · 1510 阅读 · 2 评论 -
【Android Framework系列】第5章 AMS启动流程
系统启动后Zygote进程第一个fork出SystemServer进程创建了系统的对象,运行环境。AMS在引导服务启动方法中,通过构造函数进行了一些对象创建和初始化(除activity外3大组件的管理和调度对象创建;内存电池权限性能cpu等的监控等相关对象创建),start()启动服务(移除进程组启动cpu线程注册权限电池等服务)。AMS创建后进行了一系列相关的初始化和设置。:将framework-res.apk的信息加入到SystemServer进程的LoadedApk中,并创建了。原创 2023-07-11 14:47:57 · 1741 阅读 · 0 评论 -
【Android Framework系列】第4章 PMS原理
PMS是包管理系统服务,用来管理所有的包信息,包括应用安装卸载更新以及解析AndroidManifest.xml。手机开机后,它会遍历设备上/data/app/和目录下的所有apk文件,通过解析所有安装应用的,将xml中的数据(应用信息权限四大组件等)信息都缓存到内存中,后续提供给AMS所需要的数据,它是具有保存应用数据的缓存。手机开机,内核进程启动init进程init进程启动SeriviceManager进程和启动Zygote进程Zygote进程启动进程启动AMSPMS。原创 2023-07-01 11:46:53 · 2645 阅读 · 1 评论 -
【Android Framework系列】第3章 Zygote进程相关
Zygote是Android中最重要的一个进程,Zygote进程和Init进程、SystemServer进程是Android最重要的三大进程。Zygote是Android系统创建新进程的核心进程,负责启动Dalvik虚拟机,加载一些必要的系统资源和系统类,启动system_server进程,随后进入等待处理app应用请求。原创 2023-06-28 15:58:16 · 1508 阅读 · 0 评论 -
【Android Framework系列】第2章 Binder机制大全
Binder是Android中主要的跨进程通信方式,整个Android系统架构中,大量采用了Binder机制作为IPC(进程间通信)方案。只需要拷贝一次,基于C/S架构,易用性高,系统为每个APP分配UID同时支持实名和匿名更安全原创 2023-06-23 23:54:48 · 4432 阅读 · 1 评论 -
【Android Framework系列】第1章 Handler消息传递机制
Android的Handler消息机制。原创 2023-06-05 01:08:22 · 2954 阅读 · 1 评论