位置: 编程技术 - 正文

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

  • 一般纳税人开劳务发票几个点
  • 财务软件怎么样才能用
  • 长期股权投资中应采用成本法核算的是
  • 其他债权投资是资产还是负债
  • 工程违约金收入如何入账
  • 话费发票入账
  • 企业收到普通发票开错税率跨月重开后咋入账
  • 一次性发20万元个税如何算
  • 受让无形资产是什么意思
  • 公司注销后原有债权
  • 减半征税怎么算
  • 分公司给总公司管理费的会计分录
  • 合伙人投入的资金怎么记账
  • 企业一次性支付多年费用 不摊销
  • 其他应收款需要本月合计吗
  • 小规模纳税人如何交增值税
  • 个人社保和公积金扣款公司七个人三怎么样
  • 购买展示柜怎么做会计分录
  • 计提税金及附加怎么算
  • 办理营业执照费用和流程
  • php mysql pdo
  • 打印机疑难解答显示打印机问题
  • php中md5函数
  • 盘亏固定资产累计折旧
  • 销售费用属于损益类科目的收入还是费用
  • 期间费用的会计科目
  • 出口退税会计分录怎么做没退到税全部减免抵
  • php执行sh脚本
  • php模板引擎执行时间
  • 用支付宝支付的游戏
  • vue获取value值
  • 旅游景点html代码
  • 机器学习中的数学原理——模型评估与交叉验证
  • 进项转出分录处理
  • 商品发生销售退回
  • 异地托收承付结算金额起点为
  • 红字发票可以跨越开吗
  • 补充医疗保险会查hiv吗
  • 浏览器任意链接在哪里
  • 织梦发布文章栏目怎么不显示
  • 工厂道路设计规范
  • mysql的常用命令
  • 递延所得税资产是什么意思
  • 消费税是在哪个环节缴纳
  • 变更法人流程和资料
  • 厂商租赁公司
  • 资本溢价产生的主要原因
  • 已认证抵扣增值税怎么撤回申报
  • 带息票据与不带息票据
  • 电汇凭证是什么会计科目
  • 审核通过的红字信息表可以删除吗
  • 租房发票如何做分录
  • 税务局退款会计分录
  • 2021年会计做账报税详细流程
  • 数据库崩了怎么恢复
  • windows写字板功能
  • windows vista server
  • mac磁盘空间不足怎么办
  • 教大家如何重做作业
  • 在windows中创建用户的步骤
  • windowsxp开机启动项在哪里设置
  • os x10.11el capitan beta3下载地址
  • hpm是什么格式的文件
  • xp系统快捷启动按哪个
  • win10声音文件
  • Win10打不开IE浏览器
  • jquery的deferred
  • node.js中的http.response.writeHead方法使用说明
  • sed cant read
  • 八大排序算法的时间空间复杂度
  • js 时间轴
  • 基于python语言的项目
  • python字典常用操作以及字典的嵌套
  • 税务大厅买票需要什么东西
  • 福建省国税局电话号码
  • 咨询服务合同属于购销合同吗
  • 村级公益性支出是什么
  • 税务蓝和电信蓝一样吗
  • 苏州税务局发票查询系统
  • 开增值税发票没有销售合同也要交印花税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设