Android Framework 框架系列之 ActivityManagerService
极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能
本篇文章主要介绍 Android
开发中的 AMS部分知识点,通过阅读本篇文章,您将收获以下内容:
AMS简单关系
AMS 构造函数
AMS 父类
AMS 常用
AMS部分方法实现
1. AMS简单关系
AMS 继承实现关系图
AMS 继承实现关系图
AMS代码路径\frameworks\base\services\core\java\com\android\server\ActivityManagerService.java
2.AMS 构造函数
AMS 构造函数思维导图
AMS 构造函数思维导图 一
AMS 构造函数思维导图 二
AMS 继承实现方法如下
AMS 测试构造函数
AMS 构造方法是在主线程上调用,但可能需要附加各种处理程序到其他线程,因此要注意区分Looper
AMS 构造函数 一
AMS 构造函数 二
AMS构造函数 三
3. AMS 父类 IActivityManager.Stub
ActivityMangerService 父类是由frameworks\base\core\java\android\app\IActivityManager.aidl
文件生成,可以实现跨进程通讯。此类同提供多种接口方法,共不同的进程调用。
4. AMS 常用变量
控制CPU 电池检测时间
/** Control over CPU and battery monitoring */
// write battery stats every 30 minutes.
static final long BATTERY_STATS_TIME = 30 * 60 * 1000; // don't sample cpu less than every 5 seconds.
static final long MONITOR_CPU_MIN_TIME = 5 * 1000;
广播超时,事件分发超时,网络连接超时 时间
// How long we allow a receiver to run before giving up on it.
static final int BROADCAST_FG_TIMEOUT = 10*1000; static final int BROADCAST_BG_TIMEOUT = 60*1000; // How long we wait until we timeout on key dispatching.
static final int KEY_DISPATCHING_TIMEOUT = 5*1000; /**
* Default value for {@link Settings.Global#NETWORK_ACCESS_TIMEOUT_MS}.
*/
private static final long NETWORK_ACCESS_TIMEOUT_DEFAULT_MS = 200; // 0.2 sec
5. AMS 部分方法实现
KillHandler 内部类实现
KillHandler 内部类实现
UiHandler 内部实现
UiHandler 内部实现Crash ANR 等问题
ensureBootCompleted
finishBooting 方法
enableScreenAfterBoot
enableScreenAfterBoot
hideBootMessagesLocked
实现父类的一些方法
实现父类接口中的一些方案
判断是否是前台app的方法
isAppForeground
多窗口 以及画中画模式
多窗口 以及画中画模式
PROCESS INFO 接口服务类
PROCESS INFO 接口服务类
PermissionController 接口类
PermissionController
IntentFirewallInterface Intent防火墙 接口
IntentFirewallInterface
checkCallingPermission 方法
checkCallingPermission
findUriPermissionLocked 相关方法
findUriPermissionLocked
getMemoryInfo 获取内存信息
getMemoryInfo
TASK MANAGEMENT 相关方法实现
TASK MANAGEMENT 相关方法实现
createRecentTaskInfoFromTaskRecord 方法
createRecentTaskInfoFromTaskRecord
getTaskSnapshot
getTaskSnapshot
removeTasksByPackageNameLocked 方法
removeTasksByPackageNameLocked
实现部分 kill 进程的方法 killProcessesBelowForeground killUid
实现部分 kill 进程的方法
实现 restart 方法
实现 restart 方法
systemReady 方法
systemReady 方法
handleApplicationCrash 相关方法实现
handleApplicationCrash 相关方法实现
addErrorToDropBox
将Crash WTF ANR 信息导入到Drop box
addErrorToDropBox
getProcessesInErrorState 状态信息
getProcessesInErrorState
获取正在运行的app 进程 getRunningAppProcesses
getRunningAppProcesses
dump方法实现
dump
dumpOomLocked
image.png
dumpActivity
cleanUpApplicationRecordLocked
cleanUpApplicationRecordLocked
实现 Service 相关方法
Service 相关方法
Service 相关方法
Service 相关方法
BACKUP AND RESTORE
BACKUP AND RESTORE
BROADCASTS 相关方法
BROADCASTS
BROADCASTS
BROADCASTS
INSTRUMENTATION 仪表仪器相关
INSTRUMENTATION
update Configuration更新相关
updateConfiguration
computeOomAdjLocked
computeOomAdjLocked
LocalService
LocalService
waitForNetworkStateUpdate
waitForNetworkStateUpdate
AppTaskImpl 接口类
AppTaskImpl 接口类
至此
至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。
既然都看到这里,领两个红包在走吧!以下两个红包每天都可以领取
1.支付宝搜索 522398497,或扫码支付宝红包海报。
支付宝扫一扫,每天领取大红包
2.微信红包,微信扫一扫即可领取红包
微信扫一扫,每天领取微信红包
小礼物走一走,来简书关注我