位置: 编程技术 - 正文

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

  • 网上代增值税开错不退
  • 资本公积和盈余公积怎么提取
  • 小规模纳税人税控系统
  • 税控服务费减免政策
  • 企业减免税享受什么
  • 个税手机号码没有了怎么办
  • 上缴财政收入怎么做账
  • 已入账未抵扣退回发票
  • 小规模纳税人个税申报时间
  • 财产租赁个人所得税
  • 去年的成本没有入账
  • 多缴了附加税现金怎么办
  • 小规模企业所得税税率多少
  • 关于开票时纳税的规定
  • 个税手续费需要开具发票吗
  • 长期借款优缺点分析
  • 个人出租商业用房取得的所得
  • 增值税未抵扣进项税
  • 垃圾清运属于什么大类
  • 当月未出账费用
  • 办税员可以增加办税员吗
  • 金蝶迷你版不能期末结账怎么办
  • 在windows7中,使用鼠标拖放功能
  • 报销单据粘贴单样本
  • 微信支付宝收款码二合一
  • 一键ghost软件怎么用
  • php is_integer
  • iphone8plus完美越狱
  • office进程
  • 发票开出后对方不付款
  • 软件入无形资产金额
  • 采用销售额比率法预测对外筹资需要量时
  • logd是什么进程
  • wrme.exe是什么
  • TypeError: Cannot read properties of null (reading ‘insertBefore‘) vue项目报错
  • vue路由使用方法
  • 旅游公司差额征税税率是5%
  • 法院判决后的利息
  • 限定性和非限定性资产的区别
  • 三栏式明细账对方科目有多个怎么办
  • 负债总计是负数
  • vue this.$ref
  • sql自增1
  • 股权处置时点
  • 暂估成本多了
  • 政府给的补偿款怎么做账
  • 购买火车票报销,实际没乘车能查到嘛
  • 主要业务活动是什么意思
  • 质量不合格怎么说
  • 企业购入材料收到供货单位开具的发票
  • 以前年度不合规发票如何调年报
  • 出租不动产如何缴纳增值税
  • 买二手设备需要签合同吗
  • 哪些可以做进项税
  • 计入税金及附加借方的内容
  • 本年利润的计算
  • 应交税费对应的会计科目
  • Mysql主从同步Last_IO_Errno:1236错误解决方法
  • sql server 2005如何使用
  • 阿里云安装apache
  • win8激活点不进去
  • debian更新软件
  • win8系统可以装win7系统吗
  • linux unix操作系统
  • win7找回删除的文件
  • 扫描仪在哪儿
  • win7网络正常但是所有浏览器网页打不开
  • jQuery.trim() 函数及trim()用法详解
  • 纯js代码实现一进一出
  • json对象如何取值
  • shell脚本用法
  • 用css滤镜实现的代码
  • unityui渲染顺序
  • 可分割项目
  • 生产者消费者的作用
  • python结合了什么的高级语言
  • 企业清算所得税申报表填写范本
  • 餐饮发票真伪查询系统
  • 江苏省国税局客服电话
  • 北京市东城分局刑侦大队电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设