android 不同进程间的调用 AIDL 实现通讯服务
最近对aidl android 不同进程间的调用,不同运用间的调用做了一些尝试: 步骤如下: 1:首先在要被调用的程序里写好服务service android 不同进程间的调用 AIDL 实现通讯服务_第1张图片

具体代码如下:
package com.jiaruihua.service.demo;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;public class AlipayService extends Service {@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubSystem.out.println("远程服务已绑定");<span style="color:#ff0000;">//注意此处要返回我们的IBinder</span>return new MyBinder();}@Overridepublic boolean onUnbind(Intent intent) {// TODO Auto-generated method stubSystem.out.println("远程服务已解除");return super.onUnbind(intent);}@Overridepublic void onCreate() {// TODO Auto-generated method stubSystem.out.println("远程服务已创建");super.onCreate();}@Overridepublic void onDestroy() {// TODO Auto-generated method stubSystem.out.println("远程服务已销毁");super.onDestroy();}/*
*<span style="color:#ff0000;">此处是远程所要调用的方法,功能处理在此处</span> * 支付操作 */public void payMoney(){System.out.println("支付操作");}/*
*此处需要一个Iservice.Stub,这是我们定义的Iservice.aidl,所实现的,见第二步 * Iservice.Stub 已经实现Binder  */public class MyBinder extends <span style="color:#ff0000;">Iservice.Stub</span>{@Overridepublic void callMethodService() {payMoney();}}}

2:创建上一步中需要一个Iservice.aidl文件
android 不同进程间的调用 AIDL 实现通讯服务_第2张图片

代码如下:
package com.jiaruihua.service.demo;//aidl 接口定义不需要访问修饰符 默认公共interface Iservice {void callMethodService();}

eclipse中的gen目录中会自动创建 Iservice.java文件 android 不同进程间的调用 AIDL 实现通讯服务_第3张图片
3:在mainfest.xml文件中注册Iservice
android 不同进程间的调用 AIDL 实现通讯服务_第4张图片
4:在另外一个需要调用的程序中创建一个包,注意此处的包名要和 上面mainfest.xml中service的指定包名一致; 让后将上面第二步创建的Iservice.aidl文件拷贝过来 android 不同进程间的调用 AIDL 实现通讯服务_第5张图片


5:调用远程服务
package com.example.mygameapp;import com.jiaruihua.service.demo.Iservice;import android.app.Activity;import android.app.Service;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.os.RemoteException;import android.view.View;import android.view.View.OnClickListener;public class MainActivity extends Activity {private Intent intent;private Iservice iservice;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);intent = new Intent();<span style="color:#ff0000;">// 此处的action 必须和你在调用的程序里设置的action 一至</span>intent.setAction("com.jiaruihua.ServicePay");// 绑定服务findViewById(R.id.banding).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {<span style="color:#ff0000;">// 绑定服务 开启服务</span>bindService(intent, new MyConn(), BIND_AUTO_CREATE);}});<span style="color:#ff0000;">// 调用远程方法</span>findViewById(R.id.callmethod).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubtry {iservice.callMethodService();} catch (RemoteException e) {// TODO Auto-generated catch blocke.printStackTrace();}}});}private class MyConn implements ServiceConnection {// 成功绑定@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {<span style="color:#ff0000;">// 将sercicse 转换成Iservice接口类型iservice = Iservice.Stub.asInterface(service);</span>}@Overridepublic void onServiceDisconnected(ComponentName name) {// TODO Auto-generated method stub}}}


源码demo

更多相关文章

  1. Android平台的跨进程通信——AIDL(上)
  2. Android 查看手机中所有进程
  3. [android]通讯中常用到的Helper
  4. Android Native进程内存泄露检测
  5. Android中使用AlarmManager需注意设置进程属性
  6. android 通讯录
  7. Android 多进程学习

随机推荐

  1. Android(安卓)Studio 使用 Gradle 打包 J
  2. android多分辨力支持 密度与分辨力
  3. Android(安卓)应用开发支持不同的语言国
  4. Android高手进阶教程(二)之----Android(
  5. android学习的过程
  6. mac上AndroidStudio自带的SDK manager 系
  7. android ContentResolver和ContentProvid
  8. Android简单、灵活、高效的图片裁剪框架
  9. Android实现界面刷新
  10. Android(安卓)自学之列表选择框Spinner