当前位置: 首页 > news >正文

巴彦淖尔网站制作开发北京网站建设解决方案

巴彦淖尔网站制作开发,北京网站建设解决方案,仓山区建设局招标网站,贵州建设厅网站八大员报名入口AIDL服务 服务#xff08;Service#xff09;是android系统中非常重要的组件。Service可以脱离应用程序运行。也就是说#xff0c;应用程序只起到一个启动Service的作用。一但Service被启动#xff0c;就算应用程序关闭#xff0c;Service仍然会在后台运行。 andro… AIDL服务        服务Service是android系统中非常重要的组件。Service可以脱离应用程序运行。也就是说应用程序只起到一个启动Service的作用。一但Service被启动就算应用程序关闭Service仍然会在后台运行。 android系统中的Service主要有两个作用后台运行和跨进程通讯。后台运行就不用说了当Service启动后就可以在Service对象中 运行相应的业务代码而这一切用户并不会察觉。而跨进程通讯是这一节的主题。如果想让应用程序可以跨进程通讯就要使用我们这节讲的AIDL服 务AIDL的全称是Android Interface Definition Language也就是说AIDL实际上是一种接口定义语言。通过这种语言定义接口后Eclipse插件ODT会自动生成相应的Java代码接 口代码。下面来看一下编写一个AIDL服务的基本步骤。 1.  在Eclipse工程的package目录中建立一个扩展名为aidl的文件。package目录就是Java类所在的目录。该文件的语法类似于Java代码。aidl文件中定义的是AIDL服务的接口。这个接口需要在调用AIDL服务的程序中访问。 2.  如果aidl文件的内容是正确的Eclipse插件会自动生成一个Java接口文件*.java。 3.  建立一个服务类Service的子类。 4.  实现由aidl文件生成的Java接口。 5.  在AndroidManifest.xml文件中配置AIDL服务尤其要注意的是action标签的android:name属性值就是客户端要引用该服务的ID也就是Intent类构造方法的参数值。 现在我们来编写一个AIDL服务首先建立一个android工程aidlservice。在aidlservice工程中有一个Main类在Main类所有的目录建立一个IMyService.aidl文件内容如下 package net.blogjava.mobile.aidlservice; interface IMyService { String getValue(); // 为AIDL服务的接口方法调用AIDL服务的程序需要调用该方法 } package net.blogjava.mobile.aidlservice; interface IMyService { String getValue(); // 为AIDL服务的接口方法调用AIDL服务的程序需要调用该方法 } 在保存IMyService.aidl文件后ODT会在gen目录下产生一个IMyService.java文件读者可以不必管这个文件中的内容也 不需要修改该文件的内容。这个文件是由ODT自动维护的只要修改了IMyService.aidl文件的内容IMyService.java文件的内 容就会随之改变。然后建立一个MyService类该类是Service的子类代码如下 package net.blogjava.mobile.aidlservice; ... ... public class MyService extends Service { // IMyService.Stub类是根据IMyService.aidl文件生成的类该类中包含了接口方法getValue public class MyServiceImpl extends IMyService.Stub { Override public String getValue() throws RemoteException { return 从AIDL服务获得的值. ; } } Override public IBinder onBind(Intent intent) { // 该方法必须返回MyServiceImpl类的对象实例 return new MyServiceImpl(); } } package net.blogjava.mobile.aidlservice; ... ... public class MyService extends Service { // IMyService.Stub类是根据IMyService.aidl文件生成的类该类中包含了接口方法getValue public class MyServiceImpl extends IMyService.Stub { Override public String getValue() throws RemoteException { return 从AIDL服务获得的值.; } } Override public IBinder onBind(Intent intent) { // 该方法必须返回MyServiceImpl类的对象实例 return new MyServiceImpl(); } } 最后需要在AndroidManifest.xml文件中配置MyService类代码如下 !-- 注册服务 -- service android:name.MyService intent-filter !-- 指定调用AIDL服务的ID -- action android:namenet.blogjava.mobile.aidlservice.IMyService / /intent-filter /service !-- 注册服务 -- service android:name.MyService intent-filter !-- 指定调用AIDL服务的ID -- action android:namenet.blogjava.mobile.aidlservice.IMyService / /intent-filter /service 下面来看看如何调用这个AIDL服务。首先建立一个android工程aidlclient。然后将aidlservice工程中自动生成的 IMyService.java文件复制到aidlclient工程中。在调用AIDL服务之前需要先使用bindService方法绑定AIDL服务。 bindService方法需要一个ServiceConnection对象。ServiceConnection有一个 onServiceConnected方法当成功绑定AIDL服务且该方法被调用。并通过service参数返回AIDL服务对象。下面是调用 AIDL服务的完成代码。package net.blogjava.mobile.aidlclient; ... ... public class Main extends Activity implements OnClickListener { private IMyService myService null ; // 创建ServiceConnection对象 private ServiceConnection serviceConnection new ServiceConnection() { Override public void onServiceConnected(ComponentName name, IBinder service) { // 获得AIDL服务对象 myService IMyService.Stub.asInterface(service); try { // 调用AIDL服务对象中的getValue方法并以对话框中显示该方法的返回值 new AlertDialog.Builder(Main.this ).setMessage( myService.getValue()).setPositiveButton(确定 , null ) .show(); } catch (Exception e) { } } Override public void onServiceDisconnected(ComponentName name) { } }; Override public void onClick(View view) { // 绑定AIDL服务 bindService(new Intent(net.blogjava.mobile.aidlservice.IMyService ), serviceConnection, Context.BIND_AUTO_CREATE); } ... ... } package net.blogjava.mobile.aidlclient; ... ... public class Main extends Activity implements OnClickListener { private IMyService myService null; // 创建ServiceConnection对象 private ServiceConnection serviceConnection new ServiceConnection() { Override public void onServiceConnected(ComponentName name, IBinder service) { // 获得AIDL服务对象 myService IMyService.Stub.asInterface(service); try { // 调用AIDL服务对象中的getValue方法并以对话框中显示该方法的返回值 new AlertDialog.Builder(Main.this).setMessage( myService.getValue()).setPositiveButton(确定, null) .show(); } catch (Exception e) { } } Override public void onServiceDisconnected(ComponentName name) { } }; Override public void onClick(View view) { // 绑定AIDL服务 bindService(new Intent(net.blogjava.mobile.aidlservice.IMyService), serviceConnection, Context.BIND_AUTO_CREATE); } ... ... } 在编写AIDL服务和客户端时要注意如下两点1.  AIDL服务中的onBind方法必须返回AIDL接口对象MyServiceImpl对象。该对象也是onServiceConnected事件方法的第2个参数值。 2.  bindService方法的第1个参数是Intent对象该对象构造方法的参数需要指定AIDL服务的ID也就是在 AndroidManifest.xml文件中service标签的action子标签的android:name属性 的值。 现在先运行aidlservice程序以便安装AIDL服务然后运行aidlclient程序并单击按钮会显示如图11所示的对话框。对话框中的信息就是AIDL服务接口中getValue方法的返回值。 总结        本文介绍了4种跨进程通讯的方式Activity、ContentProvider、Broadcast和AIDL Service。其中Activity可以跨进程调用其他应用程序的ActivityContentProvider可以访问其他应用程序返回的 Cursor对象Broadcast采用的是被动接收的方法也就是说客户端只能接收广播数据而不能向发送广播的程序发送信息。AIDL Service可以将程序中的某个接口公开这样在其他的应用程序中就可以象访问本地对象一样访问AIDL服务对象了。这4种跨进程通讯的方式可以应用在 不同的场合例如在需要显示可视化的界面时可以用Activity需要返回记录集时可以用ContentProvider。至于在应用程序中具体要用 到哪一种或几种方式进行跨进程通讯读者可以根据实际情况进行选择。
http://www.huolong8.cn/news/311841/

相关文章:

  • 电商网站功能全网推广图片
  • 有没有做公司网站的那个网站可以免费建站
  • 小学文化学网站开发苏州相城区最新通告
  • 苏州网站建设软件做任务什么网站
  • 国外的旅游网站做的如何xin网站ftp上传
  • 潮州木雕世家木雕网站建设案例分享wordpress鏁版嵁
  • 网站非法篡改兰州网站建设慕枫
  • 泰安网站建设入门推荐互联网推广营销隐迅推知名
  • 网站建设教程txt织梦dedecms网站简略标题shorttitle的使用方法
  • 长寿网站建设国外WordPress主题购买
  • 三门峡市建设局官方网站网站icp备案系统下载
  • 网站制作可以wordpress标签多重筛选
  • 自建网站优缺点织带东莞网站建设技术支持
  • 中国做的最好的网站商业运营是做什么的
  • 企业建站系统免费软件设计说明书模板
  • 外文网站建站网络域名备案流程
  • wordpress编辑网站的链接是中文建站行业导航网站
  • 建站报价贴吧推广400一个月
  • 做暖dnf动态ufo网站客户管理系统哪个好用
  • 成华区微信网站建设推上百度首页
  • 河北特定网站建设推荐网站内页标题
  • 福建省工程建设信息官方网站wordpress 漫画站
  • 网站导航栏怎么做简单wordpress 返回顶部代码
  • 旺旺号查询网站怎么做网站登陆模板
  • 微信官方网站是多少钱莱芜招聘信息最新招聘2022
  • 找网站建设公司信用网站建设情况
  • 网站建设的意义和目的蓝色的网站登录页面模版
  • 购物网站开发的意义石家庄展为网络科技有限公司
  • vs2013 网站开发163网易邮箱
  • 精诚时代 网站谁做的签名设计免费版