位置: 编程技术 - 正文

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

  • 小规模纳税人税率1%政策到什么时候
  • 转让土地使用权营业税税率
  • 金税四期正式启动
  • 负利润的话小型微利企业减免企业所得税吗
  • 赠品不开票如何做账
  • 公司期货收入怎么交税
  • 预付的房租计入什么费用
  • 民间非营利性组织收到个税手续费返还
  • 发票能加盖公章吗
  • 代开的增值税专用发票应怎样填写?
  • 股票印花税最新政策2023怎么算
  • 月末计提账务处理
  • 周转材料摊销借贷方向
  • 分配结转制造费用会计分录怎么写?
  • 营改增后对外投资无形资产是否需要交增值税呢?
  • 有限公司结业清算
  • 学校提供场地开发方案
  • 建筑业异地预缴税款的会计分录
  • 开票未收到款会计分录
  • 烟酒发票可以抵扣所得税吗
  • 无法查明原因的现金溢余计入什么科目?
  • 其他货币资金明细科目有哪些
  • 备抵法计提坏账准备的公式
  • mac怎么分区硬盘分区
  • 收到政府返还土地款 奖励 土地增值税
  • 小规模减免的增值税怎么记账
  • php如何防止表单重复提交
  • 实例简介php的一般过程
  • 子公司之间交易抵消
  • 跨年销货退回账务处理
  • 财务人员如何审核招待费报销单
  • php与js交互
  • 4个生活小常识简短
  • ICCV, ECCV, CVPR,IEEE的关系
  • 用友的应付单和付款单的区别各是什么时候填制
  • 销项税的分录怎么做
  • 盈余公积转增资本的最高限额
  • php与其他语言的比较
  • 交所得税会计分录例题
  • python django做网页
  • db2教程
  • mongodb数据库中间创建自己名字首字母的数据库
  • 发票冲红后报税有影响吗
  • 现金流量表直接法的优缺点
  • 生产企业生产车间人员密度是多少
  • 累计盈余的借方
  • SQL Server 2005 镜像构建手册(sql2005数据库同步镜像方案)
  • 同一控制下合并报表恢复留存收益
  • 个体户 查账
  • 结构性存款现金流量折现法
  • 多计提的折旧费怎么做账
  • 简易征收 简易计税
  • 未抵扣机动车专票红字发票怎么填开
  • 12月多开的发票,可以明年1月份入账吗?
  • 跨年跨月发票账务处理
  • 原材料暂估的业务包括
  • 企业应如何降低消费者
  • 季度平均人数怎么算出来的
  • 企业租用个人房屋的财税处理
  • mysql的子查询语句
  • 创建mysql数据库指定字符集
  • 盗版win8 1升级win10
  • 类似wps office的手机软件
  • iexploresrv.exe
  • linux查看磁盘空间大小以及分配
  • win10自定义功能键
  • centos7ssh登录
  • android layer
  • dos 浏览器
  • re engine引擎
  • vue css
  • 详解JavaScript ES6中的Generator
  • jquery实现ajax提交表单信息的简单方法(推荐)
  • android software
  • unity脚本api
  • Javascript Object 对象学习笔记
  • 医保电子缴费凭证怎么查询
  • 国税车购税征收标准
  • 收购农民自产农产品可以使用现金
  • 一般纳税人申请流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设