《系统架构系列》常用的系统Manager及对应的ManagerService

本文详细介绍了Android系统中常用的Manager类,如ActivityManager、AlarmManager、AppWidgetManager等,及其与对应的ManagerService之间的关系。这些Manager类主要用于系统服务的交互,如活动管理、警报设置、应用Widget更新、网络状态查询、下载管理、Fragment操作、定位服务、通知显示、包管理、电话服务和窗口管理等。同时,文章提到了它们如何通过IPC与底层服务通信,例如ActivityManager与ActivityManagerService的Binder通信机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近在看源码的时候,被各种XXXManager和XXXManagerService搞得有点懵,故而想整理整理这些常用的XXXManager和XXXManagerService,增强记忆。本文使用的是Android SDK 27,源码Android 8.0。

常用Manager

Manager 说明 ManagerService
ActivityManager 提供与activities,services和containing process进行交互的功能 ActivityManagerService
AlarmManager 提供访问系统警报服务的功能 AlarmManagerService
AppWidgetManager 提供管理widget的相关功能 AppWidgetService
ConnectivityManager 提供查询网络连接状态相关功能 ConnectivityService
DownloadManager 提供处理长时间运行HTTP下载的服务
FragmentManager 提供在Activity中与之交互的接口
LocationManager 提供访问系统位置的服务 LocationManagerService
NotificationManager 通知用户发生的事件,常常是后台事件 NotificationManagerService
PackageManager 用于检索与当前安装在设备上的应用程序包相关的各种信息 PackageManagerService
TelephonyManager 提供访问设备上的电话服务相关信息的功能
WindowManager 提供窗口管理器的接口 WindowManagerService

各部分功能

1.ActivityManager
SDK定义:This class gives information about, and interacts with, activities, services, and the containing process. 

根据SDK文档的说明,这个类提供了关于与activities、services和进程交互的一些信息。其中还提到这个类的大部分方法是用来调试的,并且应用开发者不需要使用到这个类。当然,对于一些特殊的情况,该类提供了一些方法给用户调用来获取必要的信息,后面会介绍几个常见的方法。
获取ActivityManager对象的方法是在拥有context的环境下使用:

ActivityManager activityManager= (ActivityManager) getSystemService(ACTIVITY_SERVICE);
或者
ActivityManager activityManager= (ActivityManager) getSystemService(ActivityManager.class);

ActivityManager常用的方法:

  • clearApplicationUserData:从磁盘中清除应用的数据,但是不会移除这个已经安装的应用;
  • getAppTasks:获取当前应用的task列表;
  • getDeviceConfigurationInfo:获取设备配置属性;
  • getMemoryInfo:获取系统内存信息;
  • getProcessMemoryInfo:获取一个或多个进程占用的内存信息;
  • killBackgroundProcesses:系统立刻杀死给定包里的所有后台进程,需要KILL_BACKGROUND_PROCESSES权限;
  • moveTaskToFront:将给定id的task移到前台,这时它将对用户可见,需要REORDER_TASKS权限;

而ActivityManager的大部分方法是通过getService()来是现实的,而getService()方法返回的是IActivityManager,而ActivityManagerNative实现了IActivityManager接口,接着会调用到ActivityManagerNative的getDefault(),它返回的是ActivityManagerService对象,这期间涉及了IPC过程。那么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值