位置: 编程技术 - 正文

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

  • 安徽增值税发票勾选认证流程
  • 个人向公司提供劳务,开发票
  • 企业所得税纳税人
  • 现流表怎么编
  • 分公司以前年度能弥补亏损吗
  • 农产品增值税抵扣政策文件
  • 预算分配比例与国库不一样
  • 企业前期开办费没有发票怎么入账
  • 购买成品入库并结转成本会计分录怎么写?
  • 价格调节基金费率
  • 企业外购固定资产的成本包括购买价款和相关税费
  • 国家金库是什么税费
  • 开出发票上有折扣的怎么入账?
  • 打款金额少于开票金额
  • 公司将固定资产卖出,要交什么税
  • 委托代理合同后果的承担
  • 会务费发票税率是
  • 取得土地无形资产的条件
  • 小微企业的免税标准
  • 营改增后建筑业开票规定
  • 汽修厂纳税多少
  • 主营业务收入增速怎么算
  • 小规模所得税申报表填写样本
  • 机器人销售属于什么行业
  • 以旧换新计税依据
  • 物业公司收取的广告费开什么发票
  • 非货币性资产交换差额计入什么科目
  • 股东之间转让股权需要股东会决议吗
  • 施工预想内容
  • 苹果紧急提醒
  • 转让二手设备如何交易
  • 所得税和应交所得税
  • 高新企业研发费用占比规定
  • 最轻薄数码相机
  • win7资源管理器叫什么
  • 若依框架权限控制
  • thinkphp cli
  • js示例
  • css选择器权重
  • 其他综合收益核算的是企业根据企业会计准则
  • 数量金额式账页图片
  • 货已入库进项发票未到怎么办
  • python如何在一个文件中运行另一个文件
  • 作废发票要不回来了怎么办
  • 排污收费制度在排污费征收方面存在的问题
  • sqlserver2008r2怎么使用
  • 个人所得税10月份申报期
  • 电子承兑转出需要授权吗
  • 企业零申报怎么办
  • 小规模纳税人销售不动产适用税率
  • 公司支付的劳务费如何走不用交税
  • 收据可以入账吗,符合税法规定吗
  • 股权稀释违法吗
  • 计提工资的会计处理
  • 购进货物用于集体福利会计分录
  • 建造合同收入怎么算
  • 采用补偿贸易方式的是
  • mysql事物的作用
  • my sql命令
  • win7端口怎么查看
  • windows7很卡
  • win7关机太慢怎么办
  • macbook key
  • 如何注销windows账户登录
  • PQV2ISECURITY.EXE - PQV2ISECURITY是什么进程 有什么用
  • android界面切换与数据传递
  • node js php
  • vue.js基础语法
  • uploadify上传无反应
  • 流程控制语句java
  • js中check
  • javascriptz
  • node cd
  • jquery判断div是否显示
  • jquery中动画效果方法
  • python高级写法
  • 减免性质代码怎么填写才正确
  • 国税局巡察整改方案
  • 2021年留抵退税可以退2019年的吗
  • 江苏电子税务局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设