位置: 编程技术 - 正文

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

  • 增值税电子发票怎么领用
  • 期初余额有误怎么在本期做调整凭证
  • 总账和成本哪个工资高
  • 分期付款进项税额怎么算
  • 当月开票当月收款
  • 自然人合伙企业怎么交税
  • 免征增值税的免税政策
  • 职工福利企业所得税
  • 销售票据和发票的区别是什么?
  • 个人工资税收怎么申报
  • 贷款 保险费
  • 年底计提费用和实际费用
  • 商业企业购货分录
  • 银行本票超过付款期限可以向出票人追索吗
  • 核定应税所得税会计分录
  • 公司账上的存货是怎么来的
  • 代扣大额医保进哪个账户
  • 1697508019
  • 公司注销的时候注册资金都没交可以吗?
  • 工程发票开具所需资料有什么?
  • 出口关税的税率
  • 律师费能计入办公费用吗
  • 经营性租赁 会计准则
  • php怎么连接服务器
  • 一个更简单的无限级分类菜单代码
  • keyemain.exe是什么进程
  • PHP:imagepsloadfont()的用法_GD库图像处理函数
  • vue前端页面设计
  • vue引入mui
  • php中require和include是用来做什么的
  • 富文本编辑器和markdown编辑器的区别
  • 营改增抵减的销项税发票要抵扣吗
  • 土地出让金返还的税务处理
  • IntersectionObserver 翻译
  • 查看zip内容
  • 自制原始凭证代码怎么填
  • 长期借款的主要成本包括
  • 折扣销售增值税计算例题
  • 购入固定资产的会计科目
  • 出纳造工资表吗
  • 印花税可以年底报一次
  • 上市公司收购其他股票
  • 什么是企业贷款余额
  • 工会经费怎么计算缴纳
  • 其他支出怎么做账
  • 安装sql server 2005,安装不成功怎么设置
  • sqlserver怎么显示结果窗口
  • 股权并购与收购的区别
  • 销售成本会计英语
  • 小规模纳税人的条件
  • 注册资本认缴与实缴有什么区别
  • 增值税专用发票有几联?
  • 纳税人未抄报税怎么办
  • 公司基建维修承诺书
  • 自产产品对外捐赠确认收入吗
  • 无形资产当月减少当月计提吗
  • 结转本月收支
  • 出国人员差旅出差补贴标准
  • 计提社保公积金的账务处理
  • 业务招待费需附上清单
  • 润滑油开具增值税专用发票
  • 其他债权投资计提损失准备会引起资产总额增加吗
  • xp系统如何打印文件
  • 让windows server 2003 32位支持8G内存大内存
  • 怎么在ubuntu上编程
  • windows8怎么关闭广告弹窗
  • linux系统怎么复制文件到u盘
  • linux如何限制指定ip访问
  • Android OpenGL ES 入门
  • Javascript之BOM(window对象)详解
  • node.js实战
  • javascript对象的种类
  • nodejs socket hang up
  • bat批处理命令大全
  • 正则批量匹配
  • c语言node定义
  • js创建一个对象,里面有属性和方法
  • jquery.form.js实现文件上传
  • 为什么要去山西
  • 个人养老金没有开立资金账户
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设