Android
文章平均质量分 89
Android开发技术
酌沧
资深软件工程师 致力于信息技术研究
展开
-
安卓系统跨层级的代码覆盖分析能力
插桩技术是一种在代码中嵌入额外代码以收集运行时信息的技术。记录代码覆盖情况:插入的代码可以记录哪些代码段被执行。收集性能数据:可以监控代码执行时间和资源使用。调试信息:可以帮助开发者调试复杂系统。原创 2024-06-19 15:13:52 · 1135 阅读 · 0 评论 -
ActivityRecord、TaskRecord、ActivityStack以及Activity详解
管理多个Stacks。每个Stack包含一个或多个Task。每个Task(通过TaskRecord实现)包含一个或多个Activity。原创 2024-06-03 19:15:12 · 689 阅读 · 0 评论 -
ADB与 Android 设备建立连接并进行通信
在设备系统设置中启用 USB debugging(位于 Developer options 下)。在运行 Android 4.2 及更高版本的设备上,Developer options 屏幕默认情况下处于隐藏状态。如需将其显示出来,请转到 Settings > About phone 并点按 Build number 七次。返回上一屏幕,在底部可以找到 Developer options。在某些设备上,Developer options 屏幕所在的位置或命名方式可能有所不同。原创 2024-06-01 10:14:21 · 1305 阅读 · 0 评论 -
AccessibilityEvent的生成和处理
在 Android 框架层,的生成和处理是通过系统的 UI 框架和辅助功能服务框架密切协作来实现的。这个机制涉及几个关键的部分:UI 组件、辅助功能服务、事件监听和事件分发。原创 2024-05-31 10:19:48 · 1192 阅读 · 0 评论 -
将Android辅助功能设置为前台服务
这种方法的使用是因为 Android 系统倾向于为了节省资源而终止后台服务,但对前台服务的处理则更为温和,因为它们被认为是对用户当前操作更为重要的服务。通过将服务置为前台,并展示一个通知,系统和用户都能明确知道有一个活跃的进程在运行,这有助于保持服务的持续运行,尤其是对于那些需要长时间运行的服务。原创 2024-05-31 07:08:54 · 1338 阅读 · 0 评论 -
Android动画与视图绘制流程的关系
Android动画主要分为三种:帧动画、View动画(补间动画)、属性动画。原创 2024-05-16 07:43:09 · 690 阅读 · 0 评论 -
Android的视图显示和管理机制:layout view window WindowManager Canvas Surface
开发者可以创造出与系统默认组件外观迥异的UI元素,满足特定应用的设计需求或品牌风格。利用自定义绘制,可以轻松实现复杂的动画效果、图形变换等,增强用户体验。在一些高性能要求的场景(如游戏、复杂动画)中,直接操作Canvas进行绘制能更精细地控制渲染流程,提高应用性能。原创 2024-05-07 15:55:32 · 1505 阅读 · 0 评论 -
Android的ART虚拟机是如何执行java方法的
在 Android 系统中,当需要启动一个 Java 应用程序或服务时,操作系统首先需要创建一个运行环境,这通常是通过 zygote 进程实现的。Zygote 是一个特殊的守护进程,它预加载了 Android 运行时和常用类库,用于快速启动新的应用进程。一旦 zygote 准备好,它就会复制自身(通过 fork)来为新的应用创建一个进程。原创 2024-05-06 15:52:05 · 978 阅读 · 0 评论 -
Android从谷歌原生代码到终端设备制造商定制的过程
整个过程展示了Android系统从基础代码到成品手机的发展路径,涵盖了操作系统层面的定制、硬件优化、用户界面和特性的增强,以及最终的市场适应性调整。这种开放和灵活的模式是Android成功的关键因素之一,它使得各种规模的制造商都能在此生态系统中找到适应和创新的空间。原创 2024-04-30 15:08:56 · 241 阅读 · 2 评论 -
Android虚拟机内存模型
基于寄存器的虚拟机中没有操作数栈的概念,但是有很多虚拟寄存器,一般情况下这些寄存器(操作数)都是别名,需要执行引擎对这些寄存器(操作数)的解析,找出操作数的具体位置,然后取出操作数进行运算。JVM的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,为了各条线程之间的切换后计数器能恢复到正确的执行位置,所以每条线程都会有一个独立的程序计数器。堆是java虚拟机所管理的内存中最大的一块内存区域,也是被各个线程共享的内存区域,该内存区域存放了对象实例及数组(但不是所有的对象实例都在堆中)。原创 2024-04-30 10:31:01 · 1650 阅读 · 3 评论 -
Android虚拟机加载类的PathClassLoader调用分析
|v[ClassLoader.loadClass(className)]|v[Custom ClassLoader.findClass(className) (如果父加载器未找到类)]|v[如果找到类字节码 -> DexFile.defineClassNative(className, l原创 2024-04-30 10:26:25 · 579 阅读 · 4 评论 -
Android GRF策略和高通QSSI方案
Android GRF策略通过需求冻结提供了更稳定和可预测的软件开发环境,帮助设备制造商提前规划并优化他们的资源。高通的QSSI方案通过创建一个通用的系统镜像,简化了多设备平台上的软件开发和维护工作。通过分离基础系统镜像(如 system.img)和设备特定的镜像(如vendor.img)QSSI 促进了更好的软件模块化。这两种方案都旨在减少开发复杂性,加快产品上市速度,并提高最终产品的质量和用户体验。原创 2024-04-27 15:42:24 · 917 阅读 · 1 评论 -
Android.mk构建一个模块
在Android系统开发中,Android.mk是一个非常关键的文件,它用于定义如何构建一个模块,无论是库、可执行文件还是应用程序。这个文件通常位于项目的某个子目录中,为ndk-build或Android的构建系统提供必要的构建指令。原创 2024-04-18 06:31:58 · 781 阅读 · 0 评论 -
揭秘Android Handler:让应用避免ANR的神器!
MessageQueue的next方法就会返回这条消息给Looper,Looper拿到这条消息就开始处理,最终消息会交给Handler的dispatchMessage()来处理,这时Handler就进入了处理消息的阶段。enqueueMessage()的源码实现主要操作就是单链表的插入操作. next()的源码实现也是从单链表中取出一个元素的操作,next()方法是一个无线循环的方法,如果消息队列中没有消息,那么next方法会一直阻塞在这里。其次锁机制会降低UI访问的效率,因为锁机制会阻塞某些线程的执行。原创 2024-04-17 08:40:56 · 504 阅读 · 0 评论 -
图解Android系统按下电源到显示界面的5个关键过程
首先Launcher进程向AMS请求创建根Activity,AMS会判断根Activity所需的应用程序进程是否存在并启动,如果不存在就会请求Zygote进程创建应用程序进程。应用程序进程启动后,AMS 会请求创建应用程序进程并启动根Activity。不管是由init进程启动的独立进程的系统服务如SurfaceFlinger,还是由SystemServer进程启动的非独立进程的系统服务如AMS,都是在ServiceManager进程中完成注册和获取的,在跨进程通信上使用了Android的binder机制。原创 2024-04-16 20:21:42 · 597 阅读 · 0 评论 -
改了哪里测试哪里-Android手机精准测试开发实践
每条测试用例对应的代码都可以进行量化分析和统计函数覆盖,分支覆盖,用例冗余度都是质量评价指标。传统的测试范围广版本频繁,测试不知道变更的地方在哪里,通常情况下要么测试范围定小了,遗漏了,要么测试范围过大,付出过多的代价。由于用例存在大量冗余,可以根据代码覆盖情况优化一个满足当前代码覆盖的一个最小用例集合,这个集合里覆盖了全部的代码,从而滤掉了很多重复测试的用例。输入版本名称可以查询该版本的所有变更,输入变更号查询哪些版本包含该变更,便于分析波及影响,展示每个代码变更的推荐用例、历史故障、变更详情。原创 2024-04-16 20:13:40 · 512 阅读 · 0 评论