位置: 编程技术 - 正文

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%征收增值税
  • 纯外贸企业进项要转出吗为啥
  • 多计提的销售费用冲销
  • 核定征收个体户个人经营所得税
  • 堤围防护费什么时候停止征收
  • 建筑业收入确认条件
  • 异地存款手续费2022最新规定
  • 私募基金管理人a向投资者推介私募产品,不合规
  • 土地配套费如何缴纳
  • 建筑企业的职工由于不服管理违反规章制度
  • 应交增值税出口退税科目怎么结平
  • 抵债资产处置的意义
  • 公司注销固定资产如何处理
  • 免税农产品加工企业
  • 转账支票用途可以写劳务费吗
  • 软件工程外包服务
  • 契税减免备案材料是什么
  • 企业为职工缴纳的五险一金占工资总额的多少
  • Mac系统怎么设置ftp
  • 收到拆迁补偿款现金流量表在哪里体现
  • 取得进账发票没发票
  • 一般纳税人存货入账价值
  • 直接计入当期利润的利得,即企业非日常
  • 增值税发票开红字发票后账务处理
  • neoDVD.exe - neoDVD是什么进程 有什么用
  • EasyExcel使用与步骤
  • php 堆排序
  • 收到员工罚款分录
  • 销售方红字发票的账务处理?
  • php短链接api
  • php流程图
  • php求日期差
  • pytorch m1
  • nfs4挂载
  • 凭证过账后发现了错误,如何处理
  • python删除列表的方法
  • 为什么企业一定要上政企通
  • 工业企业变压器容量费用
  • 学网新用什么电脑
  • 帝国cms首页调用显示标题图片代码
  • 公司组织出国旅游可以不带钱吗
  • 会计期末业务有哪些?
  • 利润表利息费用怎么填
  • 异地预缴税款少交了城建税怎么办
  • 专项资金支出时间规定
  • 开发研究的定义
  • 以前年度损益调整
  • 企业合并的流程
  • 会计 借方 贷方
  • 暂估入账跨年如何红冲
  • 支付到期承兑汇票属于什么现金流量项目
  • 增值税纳税申报表怎么填
  • 库存商品结转成本需要附件吗
  • 可以抵扣进项税的项目包括
  • 普通发票作废的保存几年合理
  • 餐饮有普通发票吗
  • 二类银行卡是什么卡
  • 企业租个人房屋个税代扣代缴
  • stdin命令
  • 自动保存怎么恢复
  • win10家庭版免费升级专业版密钥
  • 动态加载dll错误
  • shell for awk
  • python字符串常用方法
  • android基础入门教程
  • nodejs fabric
  • 显示某两个字符的函数
  • Android dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent详解
  • window.onerror()的用法与实例分析
  • 深入理解计算机系统
  • jquery.browser
  • string和stringbuffer创建后都可以修改
  • 小微企业如何申报增值税
  • 电子税务局开发票流程
  • 对于批发企业和零售连锁企业的质量验收,错误的是( )
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设