位置: 编程技术 - 正文

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

  • 成本利润率和销售利润率哪个大
  • 税前扣除项目主要内容?
  • 运输企业内账
  • 分批付款 发票怎么开
  • 预缴所得税的计税依据
  • 建筑业属于货物行业吗
  • 以前年度多交的企业所得税怎么调整
  • 贷款利息不能抵扣进项税
  • 有限合伙企业利润先税后分
  • 物业管理水电费税率
  • 企业所得税公益性捐赠扣除标准
  • 增值税怎么纳税比率
  • 销售之后发生销货折让收到红字发票如何做账?
  • 一般纳税企业委托加工物资支付的增值税
  • 有发票和银行单据的区别
  • 公司社保收费标准
  • 营改增后接受实物投资是否需要缴纳增值税?
  • 季报所得税可以预交吗
  • 企业间借贷利息规定
  • 一般户开户行可以开增值税专票么
  • 外地预缴附加税减半
  • 凭证出现错误如何解决
  • 员工迟到扣工资的会计处理
  • 预收款项确认主营业务收入谨慎性
  • 以前年度费用如何列支
  • 显示器屏幕抖动闪烁是什么原因
  • 单位给个人开票需要什么资料才能开
  • win11 恢复
  • 应付债券的会计处理
  • 购入固定资产后海通融资怎么办
  • latex双栏图片
  • 入门易学
  • 更改公司章程发函怎么写
  • 营业外收入主要来源
  • 代销商品受托方怎么做账
  • 补差价如何做账
  • 我用ChatGPT做直播技术选型,卷死了同事
  • commonjs的特点
  • init 4命令
  • Yii中的relations数据关联查询及统计功能用法详解
  • 固定资产内部转移单
  • 公允价值计量的投资性房地产
  • 交给工会的40%的工会经费里还要再返60%吗
  • 资产负债表有投资成本吗
  • wordpress woocommerce 建站
  • 外贸企业收款有限额吗
  • 个体户怎么交税?
  • 在SQL Server中使用存储过程的优点包括
  • 商业折扣应该怎么计算
  • 企业原材料成本占比
  • 小规模纳税人能开3%的专票吗
  • 研发费用怎么入帐
  • 小规模纳税人实行简易征收办法
  • 贴现利息的计算公式为
  • 叉车上牌流程注册登记
  • 资产损失扣除
  • windows xp简单操作教程
  • XP系统提示QQprotect.exe损坏文件的解决方法图文教程
  • 2008r2多用户远程桌面
  • rancheros github
  • windows没网络是怎么回事
  • wondows文件保护
  • mac将多张图片保存到相册
  • centos 安装方法
  • win8经典模式
  • linux we
  • 两台没联网的电脑怎么创建局域网
  • qq仿ios
  • 有关表格边框的快捷键
  • python 管理内存
  • unity 3a游戏
  • 了不起的女孩
  • python自动截图
  • a标签的href和onclick
  • 利用的拼音
  • unity dllimport
  • unity cpu优化
  • html微信
  • linux的python
  • 如何查询企业股票代码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设