位置: 编程技术 - 正文

个人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开发工具排行榜)

  • 增值税调整 以前签的合同怎么办?
  • 国税和地税的区别
  • 国际货运代理企业应当遵循哪些原则
  • 增值税清卡失败什么原因
  • 网上报税超过了时间还能报吗
  • 增值税专票税种
  • 加油站冲值加油怎么操作
  • 企业购买劳保用品会计处理
  • 收到运输发票需要开票吗
  • 应收账款处置损益
  • 个人独资企业改为有限公司
  • 对公业务指什么
  • 在纳税申报时如何填写申报表?
  • 所得税费用为负数是什么意思
  • 购车时服务费用怎么算
  • 固定资产折旧应该考虑哪些因素
  • 公司股东和自然人的区别
  • 购买融资租赁资产
  • 增值税减少对企业的利弊
  • 应收出租包装物的租金计入
  • 税率调整后合同金额变更案例
  • 软件开发过程中必须伴有质量保证活动
  • 对方开的销项负数抵扣联怎么处理
  • 若依前后端分离需要准备啥
  • 浅谈12 条用于 Linux 的 MySQL/MariaDB 安全最佳实践
  • php数组函数面试题
  • 在win10中显示我的电脑
  • 网页读出来
  • 增值税留抵退税账务处理
  • cpqdfwag.exe是什么进程 能结束吗 cpqdfwag进程查询
  • 工程复工程序是什么
  • 会计科目怎么调账
  • 暂估入库的税务分录
  • 成本法转为权益法例题
  • 企业所得税核定征收方法有哪两种
  • nvm for window
  • css如何应用
  • 总纳税与就地纳税区别
  • 汽车租赁的法律
  • 企业利润分配的通常去向包括
  • 营业执照上的注册资金可以改吗
  • 固定资产租赁费发票增值税税率
  • 进项转出了还能再转进去吗
  • 小规模纳税人劳务费税率
  • 事业单位财政拨款收入会计分录
  • 纳税申报表上的销售额
  • 房产税从何时计算缴纳
  • 资本支出预算属于经营预算吗
  • 社会团体收到的会费怎么入账
  • 银行对公账户季度
  • 建筑工程开办费
  • 出口免税的税种包括
  • 新成立公司怎么办理社保开户
  • 账簿的类型有哪几种
  • sql server分页查询sql语句
  • win8.1怎么升级到win11
  • centos7升级内核后 无法启动
  • xp系统怎么取消用户登录
  • apache 443
  • 苹果怎样快速移动应用到其他桌面
  • mac系统怎么共享文件夹
  • windows7软件卸载
  • win7 win8 win8.1
  • linux常用命令useradd
  • 删除linux系统命令
  • qt渲染机制
  • .android
  • 批处理命令实例
  • opengl3d
  • nodejs实例教程
  • 信号监控设备是什么
  • Python统计代码
  • node.js中的http.request.end方法使用说明
  • 用javascript写简单网页
  • js实现css样式
  • js 入门
  • jquery自带的弹出框
  • 电子税务局政策速递
  • 合肥报税网站
  • 成都车辆购置税2024年新政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设