位置: 编程技术 - 正文

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

  • 外商投资企业要实缴资本么
  • 怎么进行增值税纳税申报
  • 城市维护建设税怎么做分录
  • 实收资本印花税税率多少
  • 必胜客发票提取码在小票哪里
  • 善意接受虚开发票只能自认倒霉么
  • 开发区代管
  • 异地销售存货如何确定纳税地点
  • 期间费用如何设置项目核算
  • 房产企业贷款利率
  • 银行的期初数据怎么进行账务处理?
  • 捐赠个人支出需要交纳个税吗?
  • 腾讯计算机系统扣费15元怎么查
  • 减少注册资本金程序
  • 工会财务任务是什么
  • 工会残保金必须缴纳吗
  • 如何设置老板键
  • win11安卓子系统教程
  • win71
  • 三七粉的功效与作用及正确吃法
  • 票据承兑与票据贴现的区别
  • mis.off c n
  • pc应用是什么意思
  • 前端登录退出怎么操作
  • .net core 开发web
  • phpstrcmp函数
  • 鸟瞰画面
  • yolo v5超详细解析
  • php判断文件类型
  • 智能驾驶adas概念股龙头
  • 成本类账户期末余额在借方还是贷方
  • RocketMQ-02
  • gmt微调
  • php获取ua
  • ps使用背景橡皮擦的时候需要按住什么键
  • 住宿专票可以抵增值税吗
  • 收到保险公司的车赔款会计分录怎么写
  • 自产自销农产品免税备案取消
  • 企业收到微信和微信消息
  • 股东向公司借款超过一年不还
  • sqlserver存储过程语法
  • 主要业务活动是什么意思
  • 职工工伤住院期间的各项费用由谁负责
  • 以前年度损益调整是什么意思
  • 投资者投入固定资产成本
  • 没有进项发票开具销项发票怎么做账?
  • 售楼部大楼
  • 民办非企业单位什么意思
  • 研发支出资本化支出在资产负债表哪里体现
  • 会计什么情况下不用继续教育
  • sqlserver怎么删除字段
  • sql实现选择操作
  • sql server备份方法
  • linux增加命令
  • wp7.8升级wp8
  • macbookair numbers
  • win7如何升级win11系统
  • 惠普笔记本重装系统后没有无线连接
  • linux的kill函数
  • 学会这8个技巧让你做出的菜味道更好
  • input submit、button和回车键提交数据详解
  • 浮动浮动
  • jquery设置自定义属性
  • jQuery插件能输出到控制台
  • 原生js实现ajax步骤
  • 使用文字输入
  • 复制文件到c盘需要管理员权限
  • bat error
  • unity怎么导入材质包
  • Ext JS 4官方文档之三 -- 类体系概述与实践
  • unity3d基础操作
  • js状态管理
  • unity的gui
  • Android 使用nodejs
  • 辽宁税务遴选
  • 专票开出去了多长时间必须打入账户
  • 温州电子税务局电话号码
  • 税控盘抵税申报表怎么填
  • 福建生育津贴要交满几个月
  • 收购晾晒烟叶,支付价款20万元,支付价外补贴2万元
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设