位置: 编程技术 - 正文

个人applicationthread解惑(个人简历)

编辑:rootadmin
Android一个新应用程序启动与AMS交互过程——对ApplicationThread深入理解

推荐整理分享个人applicationthread解惑(个人简历),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:个人所得税缴纳标准,个人所得税app下载,个人所得税app正版官方下载,个人所得税缴纳标准,个人所得税,个人所得税,个人所得税缴纳标准,个人所得税缴纳标准,内容如对您有帮助,希望把文章链接给更多的朋友!

明白binder通信的原理,清楚BpXXXService或者XXXserviceProxy是BpBinder的代理类,均有对应的BnXXXService或XXXServiceNative.Stub。bpbinder和binder内核通信,是通过IPCThreadProcess实现,在服务端有一个单独的线程(也是IPCThreadProcess实现),监听发给自己的binder的消息,处理后,通过binder内核reply给client。binder机制实现了client端像本地调用一样,跨进程调用服务的方法。这部分知识有些绕,提醒自己多温习。 深入理解android IPCBinder机制可参考[老罗的android之旅] 这上下4篇文章

在laucher里面启动一个新的app时,流程参考老罗文章:

整个应用程序的启动过程要执行很多步骤,但是整体来看,主要分为以下五个阶段:

分析本人在理解这个过程中最大的疑点和解释

launcher启动新的app时(假设创建新的process),会调用AMS获取它的服务,告诉它我要启动一个新的activity,这时launcher通过调用activitymanagerproxy.startactivity();最终通过binder机制调用AMS的方法,创建activityrecord、新的task等操作后,AMS通过binder机制,通知launcher进入paused状态,大感不解,在我看来,launcher是应用程序,也就是client,怎么能像server一样,接受binder消息呢。那岂不成了服务了嘛,况且,就算成了服务,app也没有像server一样向sercicemanager注册啊

分析: Android应用程序框架层创建的应用程序进程天然支持Binder进程间通信机制,这是怎么理解[老罗这篇]

个人applicationthread解惑(个人简历)

考虑到每一个app启动创建新的进程时,都是ams调用process.start(),这里调用了通过socket的方式向zygote请求创建新的进程,viazygote,fork子进程,并

调用onZygoteInit(),可以监听和操作binder驱动了。

加载用户定义的activity类,即ActivityThread。并执行其main方法

通过1可以知道,这个app具有binder通信能力,但是其他应用若想能够给它发消息,必须知道它的binderproxy。哈哈,到了点子上了,每个app有一个activityThread成员mmainthread,activity有个成员,mappthread,它就是一个Binder对象!!!每次创建一个app,执行activitythread.main的时候,都要把mappthread(ApplicationThread类型),attach给ams,以后ams向和activity通信时只要通过这个binder就可以了。不需要像server一样,通过servicemanager获取binder的handle。 ams向activity发消息是必须的,比如通过applicationthread向activity的handler发消息,控制其生命周期。

我描述的很笼统,不对地方请指正。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android开发效率—Eclipse快捷键 转载自:

Android中使用ContentProvider进行跨进程方法调用 原文同时发表在我的博客点我进入还能看到更多需求背景最近接到这样一个需求,需要和别的App进行联动交互,比如下载器App和桌面App进行联动,桌面

Android布局中的位置控制属性 一、gravity属性和layout_gravity属性1、共有属性值属性值代表的含义top,bottom位于其容器的顶部,底部left,right位于其容器的左侧,右侧center,fill居中,填满

标签: 个人简历

本文链接地址:https://www.jiuchutong.com/biancheng/370921.html 转载请保留说明!

上一篇:Android中的Activity常见样式(android中的active_result)

下一篇:Android开发效率—Eclipse快捷键(android开发工具排行榜)

  • 如何申请成为一名党员
  • 外地预缴所得税的会计分录
  • 研发设备定义
  • 现金流量怎么影响股票价值
  • 怎么快速金蝶数据入库
  • 进项税转出主要内容包括
  • 申报扣除的广告费支出须符合哪些条件
  • 商品流通企业一般采用
  • 差额拨款的事业单位属于预算单位吗
  • 员工报销会计分录怎么做
  • 知识产权投资是什么意思
  • 期初数录错了怎么改
  • 异地存款手续费2022最新规定
  • 房地产经纪公司经营范围
  • 一般纳税人税控维护费怎么填报
  • 出售股票会计怎么做分录
  • 结算纪律与法律责任表格
  • 过路费去年的票还可以用吗
  • 企业试生产期间发生的费用怎么入账
  • 税种案例分析
  • 税务局领普通发票需要多少钱
  • 看看大家退休的单子
  • 公司账户转入另一个公司的投资款怎么做账?
  • 挂名财务负责人会坐牢吗
  • 应付账款转营业外收入需要什么条件
  • 收到捐赠的固定资产需要折旧吗
  • 应付职工薪酬在借方是什么意思
  • 期初未缴纳税额负数
  • 发票遗失复印件加盖什么章
  • Linux中RedHat CentOS Ubuntu Fedora的区别详解
  • 在win7中,如何将所有窗口进行层叠排列显示
  • win10如何添加网络适配器
  • windows11怎么操作
  • 记载资金的账簿印花税的税率是多少
  • 城市维护建设税计入什么会计科目
  • laravel视频教程
  • thinkphp整合layuiadmin
  • 资产负债表申报怎么填
  • 33.JavaScript映射与集合(Map、Set)数据类型基础知识介绍与使用
  • 文心一言中国经济大讲堂
  • thinkphp apidoc
  • php二分查找算法两种方法
  • laravel 自定义guard
  • ps中分辨率
  • 增值税抵扣进项税额什么意思
  • 如何查询去年企业所得税
  • 汇算清缴时期间费用是负数
  • 公司收到个人汇款怎么开发票
  • 增值税专用发票和普通发票的区别
  • 股东每年怎么分红
  • MySQL里Create Index 能否创建主键 Primary Key
  • mysql同步复制搭建方法指南详细步骤
  • 金税盘全额抵扣申报表怎么填
  • 公司刚成立没有员工需要申报个税吗
  • 分公司撤销跨区经营
  • SQL Server实时同步更新远程数据库遇到的问题小结
  • 建筑业 分包
  • 出口抵减内销产品应纳税额在借方
  • 企业主营业务收入分录
  • 按照管理会计的解释,成本的相关性是
  • 年底结账会计要怎么做账
  • 误餐补助标准国家规定
  • 维修基金只有收据没有发票吗
  • 酒店营业额下降的原因
  • 试运行成本会计分录
  • 二次加工型的企业有哪些
  • 建立明细账的注意事项
  • win7系统如何打开
  • fix it club
  • mac电脑卡死按哪三个键
  • logd是什么进程
  • cortana小娜怎么用
  • opengl教学视频
  • 如何用css画三角形
  • unity摇杆
  • jquery技巧
  • 简单的移动端项目
  • 完美实现碳排放自主抵消的工厂叫什么
  • 内蒙古赤峰市房价2023年最新房价走势
  • 契税的征收机关是哪里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设