位置: 编程技术 - 正文

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

  • 增值税专用发票抵扣期限
  • 公司购买员工意外保险费会计分录未收到发票
  • 为什么缴纳税
  • 资质费用是什么意思
  • 报销单用法
  • 收到货款开的增值税发票怎么写分录
  • 三栏式和多栏式的账目有哪些
  • 主营业务收入包括哪些内容
  • 企业支付给职工的工资和职工福利应当计入
  • 固定资产抵扣对账怎么算
  • 库存现金多了是什么原因
  • 厂房转让企业所得税计算方法
  • 公司在原有生产领域内充分利用
  • 劳务派遣可以开专票吗
  • 个人缴纳的住房公积金可以提现吗
  • 转让股权收入属于企业所得税收入吗
  • Win10 64位正式版系统安装方法全过程图解(U大师)
  • 稳增长促转型
  • 电脑蓝屏修复方法是什么
  • ecshop怎么用
  • 查补增值税的会计处理
  • 企业代付个人所得税计算公式
  • win10桌面图标怎么随意摆放
  • PHP:imagefilledarc()的用法_GD库图像处理函数
  • 纳税人跨县(市、区)提供建筑服务,应向建筑服务发生地
  • php判断查询是否有结果
  • thinkphp console
  • 汽油发票需要写税号吗?
  • php 数组相加
  • 维修费成本怎么结转
  • vscode搭建vue项目
  • 建筑业成本核算流程
  • 非货币性资产投资的会计处理
  • 逐帧flash动画
  • 质保金企业所得税纳税时间
  • 企业年报未报会有什么后果
  • 小微企业所得税税收优惠政策2023年
  • mysql常用命令有哪些
  • 计提未到期责任准备金的意义
  • 盈余公积的提取基数
  • 政府非税收入项目挂接流程图
  • 为什么购入股票是综股
  • 收到了对方的作业怎么办
  • 一年以内到期的长期借款属于
  • 合伙人工资薪金
  • 公司怎么变更公司名称
  • php连接mysql数据库的几种方式及区别
  • window下mysql忘记密码
  • win8开机logo
  • windows server 2003 sp1.
  • windos8怎么样
  • centos7日志管理
  • linux如何读取nvme信息
  • win7系统任务栏跑到右侧怎么办
  • 32位/64位Win10系统开机后桌面图标自动排列的解决办法
  • windows10推送
  • Linux进入图形界面卡顿
  • 如何进入win10安装界面
  • 防止 避免
  • win命令行杀死一个程序
  • linux中docker
  • Windows 7+Fedora 16启动项问题讲解
  • win8鼠标速度怎么调
  • 【Cocso2d-x Lua笔记五】quick中的display
  • qt pro load
  • 安卓新创手势
  • 深入linux内核架构与底层原理 pdf
  • 遍历目录文件
  • python添加图片
  • linux脚本case
  • javascript的promise
  • nodejs实战
  • JavaScript中的数据类型分为两大类
  • unable to instantiate decoder
  • js跨域的几种方法
  • python 正则 \s
  • 消费税纳税申报流程图
  • 转让土地的土地增值税
  • 2021年吉林省城乡居民基础养老金是多少
  • 企业的赞助费如何入账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设