位置: 编程技术 - 正文

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 (三)

  • 消费税到底是什么
  • 社保阶段性减免延长到年底
  • etc发票可以抵扣进项税吗
  • 农产品开具发票税率是多少
  • 计入资本公积的固定资产报废
  • 专票要写开户行和账号
  • 企业收到劳务费发票账务处理
  • 公司转给法人备注怎么填
  • 小规模纳税人处置固定资产的税率
  • 职工教育经费税收金额怎么算
  • 预计负债账务处理 固定资产
  • 融资租赁方式租出的固定资产
  • 银行如何做存款
  • 公司注销前的发言怎么写
  • 支付单位结算卡年费计入什么科目
  • 营改增的范围包括
  • 新产品开发费用怎么扣除
  • 应交税费不核算
  • 收费公路通行费增值税电子普通发票
  • 中小企业社保优惠延长政策
  • 管网设计费用取费标准
  • 国税局代开发票是否可代地税局征收城市维?
  • 财务报告成本
  • 多发工资未退回会怎么样
  • PHP:xml_parse_into_struct()的用法_XML解析器函数
  • hyper-v虚拟机中重置虚拟机是什么意思
  • slee401.exe - slee401是什么进程 有什么用
  • 基础知识讲解
  • 总额法的会计分录
  • 代境外汇款收的什么费用
  • 计提的增值税可以扣除吗
  • yolo v5超详细解析
  • web自动化测试方法
  • bootstrapicon
  • 精读论文分析
  • 股份有限公司都是私企吗
  • laravel中间件是什么意思
  • discuz怎么用
  • phpcms开发招聘
  • 采购货未到收到发票
  • 劳务派遣差额会计分录
  • 嵌入式软件产品税率
  • 未开票收入如何做会计分录
  • 开红字信息表后的账务处理
  • phpvue开发模式
  • mongodb基本使用
  • ❤️国庆假期快到了,用python写个倒计时程序,助你熬到假期!❤️
  • 长期股权投资成本法
  • 年度利润表与12月利润表区别
  • 利润表调整了资产负债表怎么调整
  • 借管理费用贷应交税费个人所得税
  • 应收账款项目期末余额怎么计算
  • 库存商品调价会计分录
  • 咨询公司评估选择标准
  • 农副食品发票
  • 电信增值服务费会计科目
  • 电子承兑汇票的承兑人是谁
  • 不开票收入怎么做账
  • 会计凭证传递的组织工作主要包括
  • 税种工会经费
  • 公司坏账率一般多少
  • Mysql使用教程
  • mysql数据库里面有一个表查的特别慢
  • sql kill进程
  • window怎么操作
  • linux ids
  • pavprsrv.exe - pavprsrv是什么进程 有什么用
  • win7系统纯净版和旗舰版
  • linux使用范围
  • 使用jquery实现的项目
  • cocos2dx 2.2.2
  • cocos2d-js游戏开发
  • unet遥感图像分割
  • jquery自定义的方法有哪些
  • jquery深拷贝
  • jQuery插件是什么
  • 动态表单的设计与实现
  • 12366属于哪个部门
  • 留抵税额退税政策2022年14号文件
  • 广州地税网上服务大厅地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设