位置: 编程技术 - 正文

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

  • 企业办税权限怎么授权给个人
  • 印花税征税对象包括哪些
  • 费改税是哪一年
  • 什么是税额和计税金额
  • 发票能减多少税
  • 企业实收资本与股本区别
  • 房屋出租收入会计分录
  • 公司注册后一直没有营业怎么办
  • 建筑行业预缴增值税可以用进项抵缴吗
  • 财产租赁合同印花税计税依据含税吗
  • iphone手机腾讯视频怎么取消自动续费
  • 5.0车船税和交强险一年多少钱
  • 季报每个月需要反写吗
  • 开票资料电话可以查到吗
  • 资本化和费用化的条件
  • 小规模购买农产品
  • 收到运费怎么做账
  • 超市里销售
  • 红冲发票后 库存怎么处理
  • 第二季度的利润表报错了,怎么重新报
  • 外贸企业申报出口退税商品名称可以改吗
  • 土地增值税含房产吗
  • 行程单的金额怎么算
  • 生产成本怎样结转科目明细
  • windows 10无法开机
  • 房地产企业集团内部间的担保费可以税前扣除嚒
  • fsma32.exe进程是什么文件 fsma32是什么进程
  • jetson b01 a02
  • vue中使用数组
  • 莫斯塔尔古桥多高
  • vue前端怎么运行
  • vue路由使用方法
  • 一阶段目标检测算法
  • 垃圾清运费进入会计什么科目
  • 企业所得税月月交吗
  • 自建房销售个人所得税如何计算
  • 不能加计扣除的研发费用在辅助账怎么反映
  • 直接人工成本的计算公式
  • 企业开户行信息是什么意思
  • 一般纳税人的账户可以随便转账到私人账户吗
  • 巧妙利用谐音的广告语
  • 税务师考试的报名时间
  • 小规模城建税减半征收2020新政策
  • 电费可以计入营业外收入吗
  • 如果收到现金抵押怎么办
  • 按照管理会计的解释,成本的相关性是
  • 金税盘清卡怎么弄
  • 新手必看教程
  • 商业承兑汇票如何开具
  • 工会经费返还属于什么收入
  • 工会经费计税依据是应发还是实发
  • 固定资产暂估入账的税务处理
  • 工程施工费怎么开票
  • 资产减值损失是费用类科目吗
  • 企业货币资金主要包括哪些
  • windows8命令提示符命令大全
  • win10系统怎么删
  • wp8.1怎么升级wp10
  • w3dbsmgr.exe是什么进程
  • centos8 php7.4
  • win7运行慢如何解决办法
  • giantantispywaremain.exe是什么进程 有什么作用 giantantispywaremain进程查询
  • win10激活界面打不开
  • unity自动门
  • ES6 javascript中class类的get与set用法实例分析
  • android环境搭建实训心得
  • 进程 python
  • opengl编程实例
  • 为什么你应该使用手机
  • python怎么爬
  • js中表单
  • jquery中的动画吗,是怎样用的
  • unity分成
  • 22号天蝎座的运势
  • 手滑式手机是什么意思
  • 补充协议需要双方签字盖章吗
  • 购买房屋交契税
  • 进项税计提和上交会计分录
  • 税务宣传标语2021
  • 贵州省国家税务局电子税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设