android 不同进程间的调用 AIDL 实现通讯服务
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 { @Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub System.out.println("远程服务已绑定");
<span style="color:#ff0000;">//注意此处要返回我们的IBinder</span>
return new MyBinder();
}
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
System.out.println("远程服务已解除");
return super.onUnbind(intent);
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
System.out.println("远程服务已创建");
super.onCreate();
} @Override
public void onDestroy() {
// TODO Auto-generated method stub
System.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>{ @Override
public void callMethodService() {
payMoney(); } } }
2:创建上一步中须要一个Iservice.aidl文件
package com.jiaruihua.service.demo;
//aidl 接口定义不须要訪问修饰符 默认公共 interface Iservice {
void callMethodService();
}
eclipse中的gen文件夹中会自己主动创建 Iservice.java文件
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhcnVpaHVhX2Jsb2c=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
3:在mainfest.xml文件里注冊Iservice
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhcnVpaHVhX2Jsb2c=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
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; @Override
protected 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() { @Override
public 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() { @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
try {
iservice.callMethodService();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
} private class MyConn implements ServiceConnection {
// 成功绑定
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
<span style="color:#ff0000;">// 将sercicse 转换成Iservice接口类型
iservice = Iservice.Stub.asInterface(service);</span>
} @Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub } } }
android 不同进程间的调用 AIDL 实现通讯服务的更多相关文章
- Android Binder 进程间通讯机制梳理
什么是 Binder ? Binder是Android系统中进程间通讯(IPC)的一种方式,也是Android系统中最重要的特性之一.Binder的设计采用了面向对象的思想,在Binder通信模型的四 ...
- 一篇文章了解相见恨晚的 Android Binder 进程间通讯机制【转】
本文转载自:https://blog.csdn.net/freekiteyu/article/details/70082302 Android-Binder进程间通讯机制 概述 最近在学习Binder ...
- android IPC 进程间通讯
参考资料: http://blog.csdn.net/birdsaction/article/details/39451849 在这里我说一下学习技术的方法,别人的博客,别人的东西,再简单,自己没有写 ...
- Android跨进程訪问(AIDL服务)
我将AndroidAIDL的学习知识总结一下和大家共享 在Android开发中,AIDL主要是用来跨进程訪问. Android系统中的进程之间不能共享内存,因此,须要提供一些机制在不同进程之间进行数据 ...
- Android初级教程进程间的通信AIDL
在介绍跨程序进程间通信AIDL前,先看一下本程序activity与某个服务是怎么绑定在一起进行交互的. 需求:服务有两个方法.分别是播放音乐与停止播放音乐.该程序的活动要访问这两个方法,在activi ...
- AIDL进程间调用与Binder的简单介绍
Binder是安卓中特有的一种进程间通信(IPC)方式,从Unix发展而来的手段,通信双方必须处理线程同步.内存管理等复杂问题,传统的Socket.匿名通道(Pipe).匿名管道(FIFO).信号量( ...
- Android菜鸟的成长笔记(22)——Android进程间传递复杂数据(AIDL)
在上一篇中介绍了Andorid中的进程间的通信方式AIDL,本篇文章将介绍传递复杂数据的AIDL Service 下面通过一个示例说明: 本例子中用到了两个自定义类型:Person与Pet, 其中Pe ...
- Android查缺补漏(IPC篇)-- 进程间通讯基础知识热身
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8479282.html 在Android中进程间通信是比较难的一部分,同时又非常 ...
- Android跨进程通信AIDL服务
服务(Service)是android系统中非常重要的组件.Service可以脱离应用程序运行.也就是说,应用程序只起到一个启动Service的作用.一但Service被启动,就算应用程序关闭,Ser ...
随机推荐
- HLS协议分析实现与相关开源代码
苹果定义的HLS协议,广泛运用在现在很多的流媒体服务器和客户端之间,用以传输直播电视数据流. 具体的协议参照 http://tools.ietf.org/html/draft-pa ...
- Global Round 2
A - Ilya and a Colorful Walk CodeForces - 1119A Ilya lives in a beautiful city of Chordalsk. There a ...
- 什么是PHP中的heredoc和nowdoc
heredoc结构类似于双引号字符串,nowdoc结构是类似于单引号字符串的.nowdoc结构很像heredoc结构,但是 nowdoc不进行解析操作. 这种结构很适合用在不需要进行转义的PHP代码和 ...
- 爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中
爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中 准备使用的环境和库Python3.6 + requests + bs4 + csv + multi ...
- 深刻理解下js的prototype
参考 http://aralejs.org/class/docs/competitors.html, http://www.iteye.com/topic/248933,http://www.cnbl ...
- Linux 磁盘测速
读: time dd if=/dev/zero of=/test.dbf bs=8k count=1000000 写: time dd if=/dev/zero of=/var/test bs=8k ...
- ZOJ 2588 求割边问题
题目链接:http://vjudge.net/problem/viewProblem.action?id=14877 题目大意: 要尽可能多的烧毁桥,另外还要保证图的连通性,问哪些桥是绝对不能烧毁的 ...
- codeforces 303 div2 E
赤裸裸的最短路,需要注意下枚举过程就好了.直接贴上别人的代码,发现他的代码挺符合我的风格,以后就这样写了. #include <bits/stdc++.h> ]; ]; ]; ]; vec ...
- hdu2294:Pendant
T<=10组数据问K<=30种珠子每种n<=1e9串成1~n长度的序列共有多少种,mod1234567891. 方程没想到.矩阵不会推.很好. f[i][j]--长度i,j种珠子方案 ...
- APP后端处理视频的方案
在当前的app应用中,到处都能看到视频的身影,例如,在社交类的app上,用户可以拍摄属于自己的小视频,并发布到相应得栏目,增加和好友们互动的机会. 后台常见的视频处理有以下几种: · ...