位置: 编程技术 - 正文

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

  • 2019年的个税现在还可以退吗
  • 年度应纳税所得额计算公式
  • 增值税普通发票有什么用
  • 视同销售发放福利的会计分录
  • 企业所得税减免税额包括哪些
  • 差旅费报销单是外来原始凭证吗
  • 小微企业增值税起征点是多少
  • 净流动负债和流动负债
  • 收到电子退库如何操作
  • 餐饮个体工商户交税标准
  • 企业并购金额如何确定
  • 转账支票背书有时间限制吗
  • 应交增值税和未交增值税是一个科目吗
  • 意外保险计入职工薪酬
  • 公司变更监事需要换营业执照吗?
  • 职工教育经费是多少
  • 土地出让金如何缴纳
  • 支票付款的弊端
  • 银行电子承兑如何撤回
  • 发票已认证但是没申报跨年度了怎么办
  • 原始凭证日期大写要求
  • 收到工会经费怎样做账
  • 计算土地增值税时契税可以扣除吗
  • 收到别人押金的会计分录
  • 上一年度的费用入账需要分摊吗
  • 环保税与排污费的联系
  • 建筑企业如何确认所得税收入
  • wrme.exe是什么
  • thinkphp3.2.3缓存漏洞
  • 短缺材料赔偿会计分录
  • 什么是长期股权投资法
  • php检测网站是否正常打开
  • 工会账户必须是专用账户吗
  • 基于反事实因果推断的度小满额度模型
  • 一般纳税人申请转为小规模纳税人
  • 怎样合理的运用网络
  • 季度报税有利润必须要报交所得税吗
  • python中排序
  • js怎么执行函数
  • 银行对账单由谁负责
  • 个体工商户是否属于企业
  • java怎么用mysql
  • 未交增值税如何计提
  • 百旺金赋抄报税指南
  • 销售自己使用过的固定资产
  • 预缴企业所得税计算公式
  • 房地产项目公司组织架构
  • 装修公司进的材料怎么做分录
  • 未付货款尾款会计分录
  • 工程外地预缴会计分录
  • 合同权利义务包含债务吗
  • 全额计提的坏账怎么做账
  • 开立银行承兑汇票利率
  • 冲减坏账准备的金额怎么计算
  • 收到同业清算互联前置如何入账
  • 出售短期债券投资发生的净损失计入哪里
  • mysql参数表
  • sql差异备份数据库怎么还原
  • linux实现mysql数据库每天自动备份定时备份
  • myeclipse连接mysql要装软件吗
  • Freebsd7.0+Apache2.2+MySQL5+PHP5安装配置
  • bios没有usb启动项解决方法联想
  • wp程序
  • linux的ftp命令
  • linux如何调出鼠标
  • centos 安装
  • linux系统文件压缩命令
  • win7系统IE浏览器打开跳转到360浏览器,怎么阻止
  • 重装win7系统后鼠标键盘不能用
  • linux u盘 readonly
  • opengl sharder
  • cocos设置中文
  • shell脚本用法
  • js 右键
  • jquery search
  • jQuery ajax全局函数处理session过期后的ajax跳转问题
  • python的get
  • 个人出租房屋如何计税?看这篇
  • 苏州税务局发票查询系统
  • 代理记账报税违法吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设