- 博客(287)
- 资源 (35)
- 收藏
- 关注
原创 Android Handler使用介绍
Android 中的 Handler 是用来和线程通信的重要工具。它主要用于在后台线程中执行任务,并将结果传递回主线程以更新用户界面。
2024-03-21 09:16:00 1518 2
原创 Android 车联网——CarWatchdogService介绍(二十)
CarWatchdogService 是一个安卓汽车平台中的服务,用于监控和管理车载系统的健康状态,它定期监视系统中的各个组件,以确保它们始终处于活动状态,并在出现故障时进行修复或重启。该服务可以帮助确保平台的稳定性和可靠性,防止应用程序挂起或系统崩溃。主要功能系统监控: 该服务会定期检查车载系统的运行状态,包括各个关键组件的活动情况、资源利用情况等。它可以监测是否有进程崩溃、占用过多资源、出现死锁等异常情况。异常检测: 该服务可以检测车载系统中的异常情况,并及时采取措施处理。
2024-03-20 08:58:41 253
原创 Framework基础——Zygote初始化(六)
所有的进程都由 Zygote 创建,Zygote 主要用来孵化 system_server 进程和应用程序进程。在孵化出第一个进程 system_server 后通过 runSelectLoop 等待并处理消息,分裂应用程序进程仍由 system_server 控制,等待 AMS 给他发消息(告诉 zygote 创建进程),如 app 启动时创建子进程。在 ZygoteInit.main 函数中进入 Java 层,主要有4个关键步骤:1)预加载类和资源——preload()
2024-03-20 08:57:54 216
原创 Android AMS——进程优先级更新(二十)
AMS 中的 updateOomAdjLocked 方法实现了进程优先级的动态更新。每个等级的进程又有对应的优先级,使用oom_adj值来表示,进程回收机制就是根据这个adj值来进行的 前台进程adj值最低,代表进程优先级最高,空进程adj值越高,最容易被kill,对于相等优先级的进程:使用的内存越多越容易被杀死。
2024-03-19 08:46:59 77
原创 Android AMS——进程LRU列表更新(十九)
AMS对进程的管理主要体现在两个方面:进程LRU列表动态更新:动态调整进程在mLruProcesses列表的位置进程优先级动态调整:实际是调整进程oom_adj的值。这两项调整和系统进行自动回收有关,当内存不足时,系统会关闭一些进程来释放内存,下面就依据这两方面来看下 AMS 是如何管理进程的。
2024-03-19 08:46:30 118
原创 Android 性能优化——APP启动优化
自定义控件和UI部件,不管这些控件是否支持 xml 化,实现它们的代码质量很重要,要尽可能简化它们的构造过程。
2024-03-18 09:15:03 1535 1
原创 Android PMS实战——PMS的Hook(十五)
通过前面的学习,我们都知道 PMS 是通过 ContextImpl 类中的 getPackageManager 这个方法来获取的。
2024-03-01 08:58:07 417 1
原创 Android PMS实战——Hook技术介绍(十四)
Hook 是“钩子”的意思,在 Android 操作系统中系统维护着自己的一套事件分发机制。应用程序,包括应用触发事件和后台逻辑处理,也是根据事件流程一步步地向下执行。而“钩子”的意思,就是在事件传送到终点前截获井监控事件的传输,像个钩子钩上事件一样,并且能够在钩上事件时,处理一些自己特定的事件。Hook 的这个本领,使它能够将自身的代码“融入”被勾住(Hook)的程序的进程中,成为目标进程的一个部分。
2024-03-01 08:57:42 156
原创 Android PMS——系统更新和版本管理(十三)
当一个新的系统版本发布时,PMS 会确保已安装的应用与新版本系统兼容,以避免潜在的运行时错误。通常整个检测过程遍布各个位置,来保证应用程序能够正常运行。
2024-02-28 09:19:48 38
原创 Android PMS——权限控制分析(十二)
PMS 中的权限控制通过权限管理和权限请求两个方面来实现。应用在 Android 系统中需要声明和请求权限,PMS 则会根据应用声明的权限和用户的选择来进行权限的管理和控制。
2024-02-28 09:19:05 484
原创 Android PMS——权限基础介绍(十一)
Android 将权限分为不同的类型,包括安装时权限、运行时权限和特殊权限。每种权限类型都指明了当系统授予应用该权限后,应用可以访问的受限数据范围以及应用可以执行的受限操作范围。
2024-02-27 14:35:58 219
原创 Android PMS——应用程序卸载流程(十)
从 PMS(Package Management System)源码的角度来分析应用程序的卸载流程,以下是主要步骤:用户发起卸载请求:用户在设备上选择要卸载的应用程序,并触发卸载操作。通常是通过应用商店、系统设置或应用程序管理器等界面进行操作。调用 PMS 接口:当用户发起卸载请求后,相应的界面会调用 PMS 提供的接口,传递要卸载的应用程序包名。停止应用程序组件:在卸载过程中,PMS 首先会停止与应用程序相关的组件,例如 Activity、Service、Receiver 等。
2024-02-27 14:35:34 37
原创 Android PMS——PMS处理pm命令(九)
上一篇文章介绍到最后通过 IBinder::shellCommand 调用到 PMS 中的 onShellCommand 方法。这里我们就来分析一下 PMS 中的处理流程。
2024-02-26 10:10:30 282
原创 Android PMS——pm命令解析(八)
pm 为包管理(package manager)的简称,pm 命令是 Android 系统中的一个包管理工具命令,用于管理应用程序包。它可以执行各种操作,例如安装、卸载、启用、禁用应用程序以及查看应用程序详细信息。
2024-02-26 10:09:59 136
原创 Android PMS——ADB命令安装流程(七)
前面的文章我们介绍了系统应用解析流程和通过 PackageInstaller.apk安装应用程序的相关流程,这一篇我们来分析使用 ADB 命令来实现 APK 安装流程。
2024-02-02 09:43:23 515
原创 Android PMS——网络下载应用安装(六)
我们接着上一篇文章继续分析,文章最后调用到了 PackageManagerService 中的 installStage() 方法,这里就是正式开始 APK 的安装过程。
2024-02-02 09:11:34 212
原创 Android PMS——应用安装流程介绍(五)
从 PMS(Package Management System)源码的角度来分析应用程序的安装流程,涉及以下主要步骤:获取 APK 文件:在应用程序安装之前,需要先获取 APK 文件。APK 文件是 Android 应用程序的安装包,它包含了应用程序的代码和资源文件。解析 APK 文件:PMS 首先需要对 APK 文件进行解析,以获取应用程序的信息和组件信息,例如应用程序包名、版本号、权限列表、组件列表(如 Activity、Service、Receiver 等)等。
2024-02-01 09:13:38 200
原创 Android PMS——系统应用位置解析(四)
前面的文章介绍解析 APK 时调用扫描方法 scanDirTracedLI 方法分别传入了 5 个不同的路径,这里我们来解析一下具体位置信息。源码位置:/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java。
2024-02-01 09:13:05 166
原创 Android PMS——系统应用扫描解析(三)
在手机启动时 PMS 会在这段时间处理 APK 解析,至少有 70% 的启动时间耗费在 PMS 解析上,所以这也是为什么手机开机启动比较慢的原因之一。
2024-01-31 10:52:18 87
原创 Android PMS——PMS服务启动流程(二)
PackageManagerService 既然是系统服务,那么肯定是通过 SystemServer 启动的,所以我们首先看一下 SystemServer 服务中启动 PackageManagerService 相关代码。
2024-01-31 10:51:57 83
原创 Android PMS——概述(一)
PMS(Package Manager Service)是 Android 操作系统的一个重要组件,它负责管理应用程序的包信息以及与应用程序的安装、卸载、权限控制等相关功能,确保应用程序的安全性和稳定性。 Android PMS 负责维护一个应用程序包的清单信息,该清单是一个 XML 文件,包含应用程序的各种元数据,例如应用程序的包名、版本号、权限要求、组件信息等。PMS通过访问该清单文件来获取应用程序的信息。 此外,Android PMS 还负责应用程序的安装和卸载。在安装应用
2024-01-30 11:01:23 666
原创 Android 车联网——CarMediaService介绍(十九)
CarMediaService 是安卓汽车平台中的一个服务,用于管理和控制车辆媒体系统的播放和音频功能。该服务允许车主和乘客通过车辆媒体系统访问音乐、广播、播客等媒体内容,并提供了一系列功能来控制和管理这些媒体资源。
2024-01-30 11:00:38 544
原创 Android 车联网——CarDiagnosticService介绍(十八)
CarDiagnosticService 是安卓汽车平台中的一个服务,用于监测和分析车辆的诊断数据。这个服务旨在帮助汽车制造商和开发人员实时收集和分析车辆传感器、系统状态等数据,从而检查系统故障、进行远程诊断、优化车辆性能。
2024-01-11 16:55:52 643
原创 Android 车联网——CarInputService介绍(十七)
CarInputService 是一个安卓汽车平台中的服务,它负责处理与车辆输入设备相关的操作,例如处理车辆上的按钮、方向盘控制、触摸屏输入等。该服务允许开发人员管理和响应来自车辆输入设备的事件,并与车辆上运行的应用程序进行交互。设备连接和管理:该服务通过 Wi-Fi、USB 或蓝牙等连接方式,将手机和汽车媒体系统连接起来,并负责管理设备之间的通信。应用程序投射:该服务可以将手机上的应用程序以投屏的形式呈现在汽车媒体系统屏幕上,从而允许车主和乘客对其应用程序进行操作和控制。
2024-01-11 16:55:35 494
原创 Android 车联网——其他常见Car Service(二十一)
除了前面介绍的那些 Service 和 Manager 之外,CarService 中还提供了很多其他 Service 和 Manager。我们就不一一具体分析了,在这里做一个简单的介绍。
2024-01-09 17:58:38 858
原创 Android 车联网——CarUxRestrictionsManagerService介绍(十六)
CarUxRestrictionsManagerService 是安卓汽车平台中的一个核心服务,旨在管理汽车交互体验时的用户体验限制。它允许车载应用程序根据许多方面的限制来管理其用户界面。CarUxRestrictionsManagerService 根据当前车辆状态和行驶方向来管理限制,并提供以下限制:停止限制:在车辆静止不动时启用某些功能,如视频播放。运动限制:在车辆行驶时禁用某些功能,如输入文本或操作复杂的应用程序。设备连接限制:限制外部设备和手机连接,以便保护用户的隐私和安全。
2024-01-09 17:58:20 1167
原创 Android 车联网——多屏多用户(十五)
前面几篇文章介绍了多用户和多屏相关的 Manager 和 Service。上一篇文章最后虽然车内乘员都根据配置有自己的对应屏幕,但默认情况下,所有车内乘员依然使用的是当前主用户(司机用户),这一篇我们继续放下看一下用户的创建与分配。
2024-01-06 12:27:00 1175
原创 Android 车联网——CarOccupantZoneService介绍(十四)
CarOccupantZoneManager 中定义了屏幕和车内乘员的类型。/*** API来获取车内显示器和用户的信息*/// 显示类型未知。在某些系统中,显示可能只是公开显示而没有任何附加信息,这样的显示将被视为未知。// 用户正在交互的主显示器。默认情况下,用户的UI将启动到此显示。// DEFAULT_DISPLAY将始终具有此类型。但这种类型可以有多个,因为每个乘客都可以有自己的主显示器。// 仪表盘显示。这可能只存在于驱动程序。// 抬头显示。这可能只存在于驱动程序。
2024-01-06 12:25:58 1085
原创 Android 车联网——CarUserService介绍(十三)
CarUserService 是 Android 汽车平台的一个组件,它用于管理和提供车辆用户信息。该组件可以让开发者创建和管理与车辆用户相关的数据和配置,包括车辆拥有者和乘客的个人信息、偏好设置、用户偏好配置文件等。CarUserService 提供了以下功能和特性:用户配置管理:CarUserService 允许开发者为每个特定用户创建和管理其个人设置和配置文件。例如,驾驶员和乘客可以分别拥有不同的配置文件,包括首选语言、音乐偏好、导航偏好、座椅调节偏好等。
2024-01-05 09:00:47 1154
原创 Android 车联网——CarDrivingStateService介绍(十二)
在 Android 车载开发中,UX Restrictions(用户体验限制)是一种限制或限制车辆使用者在车载应用程序中的操作和功能的安全措施。它的目的是确保驾驶员在驾驶过程中能够专注于道路和安全,避免可能导致分心、危险或不适当的操作和交互。以下是一些常见的UX Restrictions(用户体验限制)的例子:驾驶中锁定功能:某些操作和功能在车辆处于运行状态时可能是不可用的。比如,输入文本、滚动长列表或显示复杂图表等操作可能被禁用,以防止驾驶员的分心。
2024-01-05 08:52:31 952
原创 Android 车联网——CarPackageManagerService介绍(十一)
CarPackageManagerService 是 Android 汽车平台的一个关键组件,用于管理车载应用程序的安装、卸载和管理。与传统的 PackageManagerService 相比,CarPackageManagerService 在以下方面有所区别:车载应用程序管理:CarPackageManagerService 专门针对车载应用程序进行管理。它提供了特定于车辆环境的功能,例如根据车辆状态(例如行驶状态、停车状态)自动管理应用程序的可用性、限制应用程序的操作或显示特定的车载应用程序。
2024-01-04 10:52:23 1233
原创 Android 车联网——电源管理功能扩展(十)
前面两篇文章介绍了 CarPowerManagementService 和 CarPowerManager 相关代码,他们具有对应关系。对于源码中所提供的功能和电源状态等不足以满足实际开发需求,这里我们列举一些实际项目中所遇到的变化。
2024-01-04 10:47:38 584
原创 Android 车联网——PowerHalService介绍(九)
PowerHalService 是 Android 的一个系统服务,用于与硬件供应商提供的 HAL(硬件抽象层)进行交互,实现对系统电源管理的控制。
2024-01-04 10:46:29 987
原创 Android 车联网——CarPowerManager介绍(八)
与其他的 CarService 中的服务不同,除了提供了 java 类的接口 CarPowerManager 以外,CarPowerManagementService 还有对应的 C++ 类的接口,类名同样也叫CarPowerManager。这两个的源码位置分别位于:增加 C++ 类的接口主要是为了向一些使用 C++ 编写的服务提供 CarPowerManager 相关的功能,帮助其管理电源的状态。
2024-01-04 10:44:55 1177
原创 Android 车联网——CarPowerManagementService介绍(七)
Android CarPowerManagementService 是 Android 汽车平台中的一个关键组件,用于管理车辆电源管理相关的功能。它是 Android Auto 的一部分,负责协调车辆电源管理、电池优化和与车辆电源系统的交互。总体来说,电源状态的变化由车辆主控单元由下往上推送至 CarPowerManagementService。
2024-01-03 16:18:16 1087
原创 Android 车联网——CarAudioService介绍(六)
CarAudioService 是 Android Automotive OS 中的一个重要组件,用于管理车辆中的音频功能。它是 Android Auto 的一部分,负责处理车辆音频的播放、控制和路由。CarAudioService 使用标准的 Android 组件架构,基于 Binder 通信机制,提供了一组 API,用于管理车辆音频。它包括以下主要功能:音频路由管理:CarAudioService 可以让开发者控制音频的路由,即将音频发送到不同的输出设备,例如车辆的扬声器、耳机等。
2024-01-03 16:15:26 1989 2
原创 Android 车联网——CarManager管理器续(五)
源码位置:/packages/services/Car/car-lib/src/android/car/hardware/cabin/CarCabinManager.javaCarCabinManager 提供的是座舱内相关功能的 API,包括座椅、安全带、车窗等。它在用法上和 CarHvacManager 类似,同样的 CarCabinManager 也是系统级别的,只有拥有系统权限的应用才可以使用。CarCabinManager 中的属性都和座舱内的硬件设备相关,如车门、后视镜、座椅等。
2024-01-03 16:11:29 1035
原创 Android 车联网——CarManager管理器(四)
源码位置:/packages/services/Car/car-lib/src/android/car/CarInfoManager.javaCarInfoManager 用于管理车辆信息服务,其中的 API 不多,而且从方法的名称也很容易了解其具体的功能。属性描述权限系统权限车速CAR_SPEED否转速是里程数是油量CAR_ENERGY否驻车制动否档位否白天黑夜否车外环境温度否点火状态否轮距CAR_SPEED否ABS状态是牵引力控制是。
2024-01-03 16:09:06 1316
Android控件的简单使用
2015-02-16
Fragment使用
2015-01-20
ContentProvider测试Demo
2015-01-14
添加查询联系人信息
2015-01-14
Android Audio相关流程时序图
2023-11-30
Android Radio相关流程时序图
2023-09-01
本地实现U盘扫描SDK部分代码
2022-10-28
开发调试所使用的各种格式音视频
2022-07-20
Android端Socket实现聊天功能
2021-10-11
SocketDemo.zip
2021-09-24
断点续传下载
2015-05-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人