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 ...
随机推荐
- TWaver可视化编辑器的前世今生(四)电力 云计算 数据中心
插播一则广告(长期有效) TWaver需要在武汉招JavaScript工程师若干 要求:对前端技术(JavasScript.HTML.CSS),对可视化技术(Canvas.WebGL)有浓厚的兴趣基础 ...
- 抓取oracle数据库耗费资源的sql语句
oracle数据库连接业务系统,而有些sql语句的执行严重影响了oracle的性能,就如同mysql的慢查询一样,mysql可以开启慢查询日志定位这些造成数据库性能下降的语句,而oracle同样可以做 ...
- 【mybatis】mybatis数据源源码剖析(JNDI、POOLED、UNPOOLED)
一.概述 二.创建 mybatis数据源的创建过程稍微有些曲折. 1. 数据源的创建过程: 2. mybatis支持哪些数据源,也就是dataSource标签的type属性可以写哪些合法的参数? 弄清 ...
- cmd启动MySQL服务器发生错误
Mysql net start mysql启动,提示发生系统错误 5 拒绝访问 原文:https://blog.csdn.net/angel_guoo/article/details/7919037 ...
- 分分钟钟学会Python - 模块
目录 模块 1 模块基础知识 2 random 返回随机生成的一个实数 3 hashlib 摘要算法模块 Hmac算法 4 time /datetime 时间模块 5 getpass 密码不显示(只能 ...
- python初体验 ——>>> 模拟体育竞技
python初体验 ——>>> 模拟体育竞技 一.排球训练营 1. 简介: 模拟不同的两个队伍进行排球的模拟比赛. 2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ...
- 活动预告丨易盾CTO朱浩齐将出席2018 AIIA大会,分享《人工智能在内容安全的应用实践》
本文来自网易云社区 对于很多人来讲,仿佛昨天才燃起来的人工智能之火,转眼间烧遍了各个角落,如今我们的生活中,处处渗透着人工智能.10月16日,2018年 AIIA人工智能开发者大会在苏州举办,网易云易 ...
- 大数据学习——hive基本操作
1 建表 create table student(id int,name string ,age int) row format delimitedfields terminated by ','; ...
- powerdesigner批量导出sql
- Ubuntu 16.04安装JDK7/JDK8的两种方式
ubuntu 安装jdk 的两种方式:1:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 使用ppa ...