linux 和服务通讯,Android 的Activity和Service之间的通信

在Android中Activity负责前台界面展示,service负责后台的需要长期运行的任务。Activity和Service之间的通信主要由IBinder负责。在需要和Service通信的Activity中实现ServiceConnection接口,并且实现其中的onServiceConnected和onServiceDisconnected方法。然后在这个Activity中还要通过如下代码绑定服务:

Intent intent = new Intent().setClass( this , IHRService.class );

bindService( intent , this , Context.BIND_AUTO_CREATE );

当调用bindService方法后就会回调Activity的onServiceConnected,在这个方法中会向Activity中传递一个IBinder的实例,Acitity需要保存这个实例。代码如下:

public void onServiceConnected( ComponentName inName , IBinder serviceBinder) {

if ( inName.getShortClassName().endsWith( "IHRService" ) ) {

try {

this.serviceBinder= serviceBinder;

mService = ( (IHRService.MyBinder) serviceBinder).getService();

//mTracker = mService.mConfiguration.mTracker;

} catch (Exception e) {}

}

}

在Service中需要创建一个实现IBinder的内部类(这个内部类不一定在Service中实现,但必须在Service中创建它)。

public class MyBinder extends Binder {

//此方法是为了可以在Acitity中获得服务的实例

public IHRService getService() {

return IHRService.this;

}

//这个方法主要是接收Activity发向服务的消息,data为发送消息时向服务传入的对象,replay是由服务返回的对象

public boolean onTransact( int code , Parcel data , Parcel reply , int flags ) {

//called when client calls transact on returned Binder

return handleTransactions( code , data , reply , flags );

}

}

然后在Service中创建这个类的实例:

public IBinder onBind( Intent intent ) {

IBinder result = new MyBinder() ;

return result;

}

这时候如果Activity向服务发送消息,就可以调用如下代码向服务端发送消息:

inSend = Parcel.obtain();

serviceBinder.transact( inCode , inSend , null , IBinder.FLAG_ONEWAY );

这种方式是只向服务端发送消息,没有返回值的。如果需要从服务端返回某些值则可用如下代码:

result = Parcel.obtain();

serviceBinder.transact( inCode , inSend , result , 0 );

return result;

上面只是描述了如何由Acitity向Service发送消息,如果Service向Activity发送消息则可借助于BroadcastReceiver实现,BroadcastReceiver比较简单,前面在将Service中已有提及。

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MLA首日报告摘要】周志华、马毅等教授分享机器学习最新进展

来源:专知 概要:第15届中国机器学习及其应用研讨会今天11月4日在北京交通大学举行,海内外从事机器学习及相关领域研究的10余位专家与会进行学术交流。 第15届中国机器学习及其应用研讨会今天11月4日在北京交通大学举行,海内外从事…

埃森哲5G智慧城市报告:美国GDP将狂增5千亿

来源:智东西 概要:第五代通信技术将不仅仅带来网速的提高(eMBB),更意味着可靠的低延时(uRLLC)海量物联网(mMTC)。 5G被认为是万物互联的开始。第五代通信技术将不仅仅带来…

星际旅行、返老还童…1.3万字看完今年的WE大会,简直就是一部科幻电影

来源:腾讯科技 概要:在第五届WE大会上,科学家们的“脑洞”更大了:星际旅行、返老还童等一个个过去科幻电影里的镜头出现了。 11月5日,WE大会在老时间、老地点如约而至。 时光飞速,WE大会如今已经是第五届了…

智能优化算法应用:基于战争策略算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于战争策略算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于战争策略算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.战争策略算法4.实验参数设定5.算法结果6.…

从芯片巨头沦落到收购对象 高通是怎样失去魔力的?

来源:凤凰科技 概要:过去5年,高通股价几乎是原地踏步,而其他科技公司的股价却一直在快速上涨。 据《福布斯》北京时间11月6日报道,在华尔街,高通已经失去昔日魔力。过去5年,高通股价几乎是原地踏…

2017年中国人工智能产业专题研究报告(完整版)

来源:数据观 概要:目前,中国的人工智能研究处于爆发期,行业巨头公司正逐渐完善自身在人工智能的产业链布局,而不断涌现出的创业公司将持续在垂直领域深耕深挖。 目前,中国的人工智能研究处于爆发期&#x…

周志华:最新实验表明gcForest已经是最好的非深度神经网络方法

北京时间 11月5 日到11月6日,西瓜书《机器学习》作者、南京大学机器学习与数据挖掘研究所(LAMDA)周志华教授日前在MLA 2017上的演讲:深度森林初探——讲述的关于他最新集成学习研究成果-深度森林,一种对深度神经网络可…

中国工程程院院士高文:从大数据科学到人工智能的迁移过程

概要:中国工程程院院士、北京大学教授高文应邀参加JDD京东金融全球数据探索者大会,并进行了以“探索大数据,迎接人工智能时代”为主题的演讲。 来源:亿欧 11月6日,京东举行JDD京东金融全球数据探索者大会,在…

2017全球硬科技创新大会今日开幕 科技大腕聚集共绘西安“硬科技”发展蓝图

概要:2017全球硬科技创新大会今天在西安开幕。 来源:中国科技网 科技大腕聚集共绘西安“硬科技”发展蓝图 2017全球硬科技创新大会今天在西安开幕。本次大会参会人数超过5000人,其中有诺贝尔奖获得者、国内外相关领域院士专家、科技企业领袖、…

c语言能实现帧动画吗,CSS3 animation属性中的steps实现GIF动图(逐帧动画)

相信 animation 大家都用过很多,知道是 CSS3做动画用的。而我自己就只会在 X/Y轴 上做位移旋转,使用 animation-timing-function 规定动画的速度曲线,常用到的 贝塞尔曲线。但是这些动画效果都是连续性的。今天发现个新功能 animation-timing…

Sorenson Capital:值得投资的 5 种 AI 技术

概要:身为投资者的你,如果看好AI和机器学习的前景,又该在AI公司遍地开花的市场中,选择什么样的公司进行投资? 来源:36Kr 值得投资的机器学习和人工智能的应用有哪些? 人工智能、神经网络、机器…

这个重量级产业,中国正在爆发!

来源:全球新论坛 概要:中国在汽车领域和先进国家差距很大,但是我们至少做了一件对的事情,在中国销售的车辆都是在中国制造。 集成电路产业是中国产业升级的重中之重,我们都知道汽车是人类第一大工业,中国在…

AI论文引用排行榜丨微软第一,清华第九;Alphabet董事长看AI:美国仅领先5年,大陆追赶速度快;

来源:集微网 概要:根据The Verge报导,Schmidt表示,美国在AI人工智慧领域落后的风险相当高,他预测未来5年美国还有领先的实力,但之后大陆追上来的速度会非常快。 1.AI论文引用排行榜:微软第一,清华第九; 日经…

MIT 的新型开源系统 Taco 将数据分析速度提升 100 倍 !(附论文)

来源:全球人工智能 概要:麻省理工学院(MIT)开发的一种新型计算机系统为涉及“稀疏张量”(sparse tensor)的计算加快了速度,稀疏张量是主要由0组成的多维数据数组。 麻省理工学院&#xff08…

android动态设置文本居中显示图片,Android DrawableTextView图片文字居中显示实例

在我们开发中,TextView设置Android:drawableLeft一定使用的非常多,但Drawable和Text同时居中显示可能不好控制,有没有好的办法解决呢?小编的方案是通过自定义TextView实现。实现的效果图:注:第一行为原生Te…

洪小文:以科学的方式赤裸裸地剖析AI(二)|从寒冬到复兴

来源:微软研究院AI头条 概要:1956年,在达特茅斯会议之后,包括很多国家政府,美国国家科学基金会、军方,大家满怀希望投了很多钱。但是到1975年以后发生了几件事情,让AI进入了寒冬。 谈AI的历史&a…

ios android分享代码,快速插入代码块——iOS Android

昨天看到一篇分享插入代码块的文章 Xcode 快速开发 代码块,想到把我知道的其它方案也分享一下iOS篇这种方案可行,但效率不够高方案二:DashDash 目前只有 macOS 版本,免费,但有限制(会有时间延时,可以付费取…

重磅!腾讯发布AI生态计划将赋能1000合作伙伴!

来源: 腾讯科技 概要:11月8日,腾讯2017全球合作伙伴大会,在“创想人工智能”论坛上,腾讯披露了人工智能的整体布局,以及在众多研究领域的最新技术进展与应用探索。 11月8日,腾讯2017全球合作伙伴…

重磅:ATT的《5G移动边缘计算白皮书》!

来源:5G 概要:今天(11月8日),AT&T宣布,其正在硅谷建设MEC(移动边缘计算)测试外场。 精彩报告

android 6.0 adb,安卓6.0,adb停用系统更新

集各路大神的方法,汇总一下。1、下载adb工具包2、进入开发者选项,打开“手机打开USB调试”,手机上确认允许电脑usb调试。3、手机上断开wifi和移动网络,应用管理里找到系统更新-存储-删除数据,再退出进入系统更新。4、电…