位置: 编程技术 - 正文

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

  • 公司车辆过户给个人车牌可以保留吗
  • 混合销售行为的基本特征不包括
  • 符合简易征收的条件
  • 没有申报个税的工资怎么入账
  • 残保金季报要填上年职工人数
  • 应收应付账务处理工作具体做哪些
  • 公司买手表可以抵扣吗
  • 哪些增值税专用发票可以抵扣进项税
  • 应纳税所得额为什么要减去国债利息收入
  • 滞纳金按年怎么算
  • 银行利息月末结算方式
  • 新政府会计制度衔接预算会计需做好的账目清理工作有
  • 外贸企业当月没交税
  • 派发股票股利如何入账处理合适?
  • 实收资本收到后用途
  • 公司按最低标准缴纳社保
  • 私募基金款打到什么账户
  • 收到客户银行按时到账
  • 企业发生的借款费用,可直接归属于
  • 增值税发票本月没用完可以下月用吗
  • 广告宣传费用的计算方法
  • 增值税普通发票怎么开
  • 合同中补充协议
  • 一般和小规模纳税人哪个免税
  • 开发票冲销
  • 公司没有车牌可以买车吗
  • 正常工资薪金本期收入含哪些
  • 个人所得税的税收标准
  • 公司如何为员工缴纳社保
  • 股东退股未分配股利
  • 无法运行loot
  • 后裔王者荣耀台词大全
  • 新会计规定工会会计制度
  • npfmntor.exe - npfmntor是什么进程 有什么用
  • PHP:finfo_open()的用法_fileinfo函数
  • php实现定时任务
  • 固定资产处理步骤
  • v-model的双向绑定原理
  • php公众号开发框架
  • 日期选择器的()属性表示选择器的粒度
  • redis常见问题解决
  • 现代服务增值税纳税义务发生时间
  • 持有待售资产属于
  • 一般纳税人进项大于销项账务处理
  • 董事费收入
  • mysql默认存储引擎的命令
  • 电子承兑没到期可以提示付款吗
  • 计提增值税附加税的账务处理
  • 跨年发票账务处理怎么做
  • 管理费用现金流量附表指定
  • 怎么调整应收账款分录
  • 公司社保委托代发银行是工资卡银行吗
  • 利息收入记借方还是贷方
  • 预收冲应收怎么做账
  • 新公司期初余额怎么算
  • 业务招待费算期间费用吗
  • 代扣的应由职工个人负担的社会保险费计入什么科目
  • 来料加工的特点包括
  • 去年管理费用多支三万元怎么办
  • 工作地变更社保卡怎么办
  • mssql server 2012(SQL2012)各版本功能对比
  • mysql中binlog_format模式与配置详细分析
  • windows xp登录无法进入桌面
  • win10剪贴板怎么调出来
  • Unity3D游戏开发(第2版)
  • jquery上传图片并预览
  • perl调用系统命令
  • node_modules复制
  • delect删除
  • javascript基础笔记
  • android PopupWindow显示位置设置
  • python在windows
  • js 比较
  • flask框架代码
  • 税务局追缴社保流程及办理期限
  • 期初库存和期末库存是什么意思
  • 税友核心价值观
  • 税务局税收风险排查总结
  • 江宁市民中心周末可以办户口吗?
  • 北京税务网站
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设