位置: 编程技术 - 正文

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

  • 资源税的计税依据含增值税吗
  • 工厂房租没有发票怎么办
  • 分公司开专票需要缴税
  • 技术使用费所得税怎么算
  • 企业其他综合收益减少应该怎么处理
  • 带清单的发票怎么贴原始凭证
  • 其他应付款短期借款
  • 房企预收账款什么时候结转
  • 建筑服务适用简易计税吗
  • 企业收取的租金会计分录
  • 跨年发票是否可以报销 审计
  • 油费补贴是否计入个税
  • 生产单位车间设计费应该计入什么科目?
  • 余利宝怎样
  • 注册资本需要
  • 企业发生的咨询费用
  • 业务招待费可以结转下年抵扣吗
  • 小企业会计准则科目
  • 销售原材料会计分录,款项已收
  • 资金拆借利息收入是什么意思
  • 苹果mac怎么复制文件到u盘 免费软件
  • mac怎么禁止开机启动
  • 其他综合收益怎么来的
  • php utf8转gb2312
  • 无法打开exe程序
  • 杜拉通河谷中的Nuestra Señora de la Hoz老修道院,西班牙塞哥维亚 (© Arco Images GmbH/Alamy)
  • javascript获取input的值并计算
  • 固定资产折旧计算方法公式大全
  • 建筑企业跨省经营
  • php批量处理数据
  • php中session什么意思
  • php cookie session
  • php扫一扫识别代码
  • thinkphp codeigniter
  • 税务退附加税会计分录
  • phpcms怎么样
  • 办公费用会计科目怎么写
  • 应交税金应交增值税科目设置
  • 公司向银行贷款利息是多少
  • 社保所属期怎么填
  • 购入不动产的税率是多少
  • sql dbo
  • 业务活动成本和管理费用能不能写在一起
  • 淘宝开店的钱怎么取出来
  • 劳动仲裁的调解书可以撤销吗
  • 公司代缴社保生育津贴大概领多少
  • 免费赠送客户入群的文案
  • 负担、支付所得的企业
  • 交易性金融资产包括哪些项目
  • 事业单位装修费账务处理
  • 什么是合法有效的继承证明
  • 怎样计算加班工资?
  • mysql数据库windows
  • centos中rpm包怎么安装
  • win10预览版和正式版区别
  • guest怎么用
  • 怎么找回手机删除的照片和视频
  • RPDFLchr.exe - RPDFLchr是什么进程 有什么用
  • windows8桌面设置
  • centos 安装chia
  • 翻转动画怎么做
  • android images
  • python中的变量赋值
  • c++11视频教程
  • JavaScript弹出对话框
  • 解析函数
  • Node.js中的事件循环是什么
  • linux多线程编程实例
  • unity更新下载文件
  • js实现瀑布流效果
  • javascript入门基础
  • c# /n
  • htc windows
  • androidsdk的计算机
  • 专用发票如何导出
  • 金条如何销售
  • 无偿划转暂行规定
  • 免征船舶吨税的范围
  • 怎么登录吉林省公务员网络培训学院
  • 二套房办房产证税费怎么算的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设