首页 > 教程攻略 > Android攻略 > android studio的aidl文件怎么创建?android studio创建AIDL服务步骤

android studio的aidl文件怎么创建?android studio创建AIDL服务步骤
2018-01-05 16:38:28  作者:   责任编辑:我就是小浩   点击:

  android studio的aidl文件是用来跨进程访问的,在很多的android 程序开发过程中都会需要创建一个AIDL服务,AIDL服务是什么,使用android studio创建AIDL接口服务之前需要做什么,该要如何创建这个文件呢?一起看看吧。

  什么是AIDL服务

  为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口。因此,可以将这种可以跨进程访问的服务称为AIDL(Android Interface Definition Language)服务。

  android studio创建AIDL服务具体步骤如下

  1、要进行创建AIDL的接口之前,需要进行选中当前的项目的文件中,选中完成项目之后。

android studio的aidl文件怎么创建?android studio创建AIDL服务步骤 www.shanyuwang.com

  2、然后进行点击Android studio菜单中的“file”的选项,就会弹出了一个下拉的菜单中“new”选项。

android studio的aidl文件怎么创建?android studio创建AIDL服务步骤 www.shanyuwang.com

  3、就会弹出了一个下一级的菜单中,进行选择下一级菜单中的“AIDL”的选项。

android studio的aidl文件怎么创建?android studio创建AIDL服务步骤 www.shanyuwang.com

  4、就会弹出了一个菜单中,进行点击这个菜单中的“AIDL FILE”的选项。

android studio的aidl文件怎么创建?android studio创建AIDL服务步骤 www.shanyuwang.com

  5、就会弹出了一个AIDL的窗口的选项,需要给接口进行添加名称,在interface name的输入框中进行输入名称,点击”finish“的选项。

android studio的aidl文件怎么创建?android studio创建AIDL服务步骤 www.shanyuwang.com

  6、然后在项目中进行天机了一个aidl的文件,在该文件下中,有一个aidl的后缀的文件,其实就是一个接口文件。

android studio的aidl文件怎么创建?android studio创建AIDL服务步骤 www.shanyuwang.com

  实例:

  服务器端:

  本例中将建立一个简单的AIDL服务。这个AIDL服务只有一个getValue方法,该方法返回一个String类型的值。在安装完服务后,会在客户端调用这个getValue方法,并将返回值在TextView组件中输出。建立这个AIDL服务的步骤如下:

  (1)建立一个aidl文件。在Java包目录中建立一个IMyService.aidl文件。IMyService.aidl文件的位置如图所示。

  IMyService.aidl文件的内容如下:

  package cn.m9.mobile.aidl;

  interface IMyService {

  String getValue();

  }

  IMyService.aidl文件的内容与Java代码非常相似,但要注意,不能加修饰符(例如,public、private)、AIDL服务不支持的数据类型(例如,InputStream、OutputStream)等内容。

  (2)如果IMyService.aidl文件中的内容输入正确,ADT会自动生成一个IMyService.java文件。读者一般并不需要关心这个文件的具体内容,也不需要维护这个文件。

  (3)编写一个MyService类。MyService是Service的子类,在MyService类中定义了一个内嵌类(MyServiceImpl),该类是IMyService.Stub的子类。MyService类的代码如下:

  package cn.m9.mobile.aidl;

  import android.app.Service;

  import android.content.Intent;

  import android.os.IBinder;

  public class MyService extends Service {

  public class MyServiceImpl extends IMyService.Stub {

  public String getValue()

  {

  return "Android is very powerful";

  }

  }

  @Override

  public IBinder onBind(Intent arg0) {

  // TODO Auto-generated method stub

  return new MyServiceImpl();

  }

  }

  在编写上面代码时要注意如下两点:

  IMyService.Stub是根据IMyService.aidl文件自动生成的,一般并不需要管这个类的内容,只需要编写一个继承于IMyService.Stub类的子类(MyServiceImpl类)即可。

  onBind方法必须返回MyServiceImpl类的对象实例,否则客户端无法获得服务对象。

  (4)在AndroidManifest.xml文件中配置MyService类,代码如下:

  其中"cn.m9.activity.IMyService"是客户端用于访问AIDL服务的ID。

  下面来编写客户端的调用代码。首先新建一个Eclipse Android工程(TestAidlClient),并将自动生成的IMyService.java文件连同包目录一起复制到 testAIDL_client工程的src目录中(R文件除外).

  调用AIDL服务首先要绑定服务,然后才能获得服务对象,代码如下:

  package cn.m9.mobile;

  import cn.m9.mobile.R;

  import cn.m9.mobile.aidl.IMyService;

  import android.app.Activity;

  import android.content-componentName;

  import android.content.Context;

  import android.content.Intent;

  import android.content.ServiceConnection;

  import android.os.Bundle;

  import android.os.IBinder;

  import android.util.Log;

  import android.view.View;

  import android.view.View.OnClickListener;

  import android.widget.Button;

  import android.widget.TextView;

  public class TestAidlClient extends Activity implements OnClickListener {

  /** Called when the activity is first created. */

  private IMyService myService = null;

  private Button btnInvokeAIDLService;

  private Button btnBindAIDLService;

  private TextView textView;

  private static final String TAG="TestAIDLClient";

  private ServiceConnection serviceConnection = new ServiceConnection()

  {

  @Override

  public void onServiceConnected(ComponentName name, IBinder service) {

  // TODO Auto-generated method stub

  myService = IMyService.Stub.asInterface(service);

  btnInvokeAIDLService.setEnabled(true);

  }

  @Override

  public void onServiceDisconnected(ComponentName arg0) {

  // TODO Auto-generated method stub

  }

  };

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(Ryout.main);

  btnInvokeAIDLService = (Button) findViewById(R.id.btnInvokeAIDLService);

  btnBindAIDLService = (Button) findViewById(R.id.btnBindAIDLService);

  btnInvokeAIDLService.setEnabled(false);

  textView = (TextView) findViewById(R.id.textview);

  btnInvokeAIDLService.setOnClickListener(this);

  btnBindAIDLService.setOnClickListener(this);

  }

  @Override

  public void onClick(View view) {

  // TODO Auto-generated method stub

  switch (view.getId())

  {

  case R.id.btnBindAIDLService:

  //绑定AIDL服务

  bindService(new Intent("cn.m9.mobile.aidl.IMyService"), serviceConnection,Context.BIND_AUTO_CREATE);

  break;

  case R.id.btnInvokeAIDLService:

  try{

  textView.setText(myService.getValue());

  } catch (Exception e)

  {

  }

  break;

  }

  }

  }

  在编写上面代码时应注意如下两点:

  使用bindService方法来绑定AIDL服务。其中需要使用Intent对象指定AIDL服务的ID,也就是标签中android:name属性的值。

  在绑定时需要一个ServiceConnection对象。创建ServiceConnection对象的过程中如果绑定成功,系统会调用onServiceConnected方法,通过该方法的service参数值可获得AIDL服务对象。

  首先运行AIDL服务程序,然后运行客户端程序,单击【绑定AIDL服务】按钮,如果绑定成功,【调用AIDL服务】按钮会变为可选状态,单击这个按钮,会输出getValue方法的返回值.

  总结:以上就是小编为大家带来的全部相关内容了,相信网友们都知道要怎么做了吧。

android studio的aidl文件怎么创建?android studio创建AIDL服务步骤软件下载阅读地址:http://www.shanyuwang.com/softview-20-5700-1.html

相关热词搜索:

上一篇:小米5手机待机时间短的解决方法
下一篇:三星N9200呼叫转移设置方法

分享到: 收藏
攻略排行