位置: 编程技术 - 正文

ActivityManagerService (二)

编辑:rootadmin

推荐整理分享ActivityManagerService (二),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

文章出处: (一)

继续总结:

ActivityManagerService.setSystemProcess();

当初android 查看内存使用情况提到了这个函数。

1)注册AMS

在SystemServer中会看到ServiceManager中会注册很多service,可是轮到AMS的时候直接调用的main,到这里才看到了注册。注意addService时候的第三个参数是true,一般默认是false。

2)注册procstats、meminfo、gfxinfo、dbinfo、cpuinfo、permission

3)getApplicationInfo

首先getPackageManager得到是在SystemServer中初始化的PM,这里的ApplicationInfo应该是在AMS.main的时候实例化LoadedApk时候new出来的?不太确定。

4)installSystemApplicationInfo

跟之前AMS.main中提到的getSystemContext一样,就是将ApplicationInfo绑定到mSystemContext

5)newProcessRecordLockedProcessRecord记录了当前ApplicationInfo的uid号、userId、processName、以及进程优先级等,并且在pkgList保存了所有在当前进程中的package信息。具体的ProcessRecord后面继续说明。6)app.persistent = true;

一直保持这个应用运行,应用是不会被随便kill的。

ActivityManagerService (二)

7)app.pid = MY_PID;

应用的pid应该是system_server的pid。

8)app.makeActive(mSystemThread.getApplicationThread(), mSelf.mProcessStats);

先来看一下第一个参数ApplicationThread:

在ActivityThread中定义了一个常量mAppThread,也就是说每实例化一个ActivityThread,就会跟这有个ApplicationThread。这里的ApplicationThread也是AMS中的关键:四大组件之间的连接这里基本都涉及到了。对于AMS中的四大组件的详细串联过程,后期在《ActivityManagerService 详解》中会继续补充。

回到之前的makeActive函数中,显然了这里的 _thread不是为null。之前ProcessRecord构造函数中并没有初始化thread,所以,这里thread是null的。注意这里的变量baseProcessTracker,ProcessRecord很多地方会用到这个tracker:刚开始的时候肯定是null,所以初始化就在这里:这里的mProcessStats是在AMS.main中构造函数里面初始化过。这里会构造PackageState和ProcessState,并分别添加到mPackages和mProcesses数组中,并将ProcessState添加到PackageState的mProcesses数组中,从这里可以看到,一个Package可以运行在几个process里面,通过一个process也可以运行几个package。下面是上述几个类的结构图:最后将当前ProcessRecord加入到mProcessNames和mPidsSelfLocked数据结构当中。updateLruProcessLocked用于调整系统优先级,updateOomAdjLocked用于low memory killer,基本上ProcessRecord是没看懂,后期继续研究补充。

android寻找最适合资源过程 Whenyourequestaresourceforwhichyouprovidealternatives,Androidselectswhichalternativeresourcetouseatruntime,dependingonthecurrentdeviceconfiguration.TodemonstratehowAndroidselectsanalternativeresource,

ActivityManagerService (三) 文章出处:

第一章,listview的简易用法(Android) 这篇文章主要是练习了安卓listview的arrayadapter和baseadapter的简单填充。1.arrayadapter填充布局:RelativeLayoutxmlns:android=

标签: ActivityManagerService (二)

本文链接地址:https://www.jiuchutong.com/biancheng/385959.html 转载请保留说明!

上一篇:HorizontalListView

下一篇:ActivityManagerService (三)

  • 税务局开票需要交钱吗
  • 应交税费课程
  • 哪些增值税专用发票可以抵扣进项税
  • 折扣折让属于什么科目
  • 为什么差额征税有的可以开专票有的只能开普票
  • 负数发票要给购票人吗
  • 发票右上角打印缺数字
  • 养老基金利率多少
  • 出售闲置的材料物资
  • 进项税认证怎么做分录
  • 什么情况下是应收账款
  • 交易性金融资产的交易费用计入哪里
  • 利润表中的上期金额怎么填?
  • 中央空调可一次开多少度
  • 专票红冲后的账务处理
  • 允许列支的捐赠比例
  • 利息发票能开专票吗
  • 小规模纳税人怎么算税
  • 利润调整分录
  • 单位外汇账户可分为
  • mac如何配置
  • 事业单位在建工程转固定资产的账务处理
  • 劳务服务包括哪些范围
  • win10预安装环境
  • 在Linux系统中安装Samba服务器
  • 会计科目在建工程有金额要求吗
  • 公司入股的钱叫什么
  • 非货币性资产对外投资会计处理
  • php bcsub
  • 出租其取得的不动产是什么意思
  • php i
  • 金融业营业税税率
  • 分包缴纳的个税怎么算
  • 钢管扣件租赁公司社会实践报告怎么写范文
  • 一键部署web应用
  • yolov5标签格式
  • /etc/php-fpm.d/www.conf 配置注意事项
  • 人脸检测5种方式
  • 缺陷修饰
  • 认缴制和实缴制的区别
  • uni app ios
  • python面向过程与面向对象的区别
  • 公司年底封账时间
  • 茶叶一般开多少度保存
  • 建筑业先预缴还是先扣税
  • 增值税专用发票电子版
  • 迭代器实现原理
  • mysql 字符集
  • 差旅费报销会计凭证
  • 员工旅游的费用账务处理
  • 个人所得税应补退税额怎么查
  • 增值税要计入应收账款吗
  • 跨年预收账款被税局要求确认收入怎么交增值税
  • 会计处理方法是什么意思
  • 税金及附加包括哪些科目
  • 企业清算所得税申报
  • 主办会计的工作内容和职责
  • 行政事业单位核销固定资产的账务处理
  • 保险公司 返点
  • 白条可以入账吗?
  • 银行收的账户管理费
  • 二手市场机械设备
  • 什么是对公账户?
  • 企业为员工代缴社保怎样在网上申报
  • 发出计价是什么意思
  • 缴纳注册资金印花税怎么做账
  • 长期无法收回的应收账款如何处理
  • 房地产开发企业增值税税率
  • centosyum源
  • linux dicom
  • win10极限精简版 200m
  • win7系统玩英雄联盟蓝屏
  • win7右下角时间怎么显示年月日
  • certutil - decode/encode BASE64/HEX strings.Print symbols by HEX code
  • ExtJS Ext.MessageBox.alert()弹出对话框详解
  • 不要使用CSS Expression的原因分析
  • jquery console.log
  • javascript网页编程
  • 如何下载建设工程消防验收备案表格下载
  • 在深圳月薪8000是什么水平
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设