aidl的应用场景
支付宝
package com.tesy.alipay; import com.test.alipay.Iservice.Stub; import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder; public class PayService extends Service { //[2]我们定义的中间人对象返回
@Override
public IBinder onBind(Intent intent) {
return new MyBinder();
} //支付宝支付的方法
public boolean pay(String name,String pwd,int money){
System.out.println("1验证用户名和密码 ");
System.out.println("2验证手机是否携带病毒");
System.out.println("3调用C语言 做一些加密处理 "); if ("abc".equals(name)&& "123".equals(pwd)&& money <5000) { return true;
}else {
return false; } } //定义中间人对象
private class MyBinder extends Stub{ //调用支付的方法
@Override
public boolean callPay(String name, String pwd, int money) { return pay(name, pwd, money); } } }
<service android:name="com.itheima.alipay.PayService">
<intent-filter >
<action android:name="com.itheima.alipay"/>
</intent-filter>
</service>
欢乐斗地主买豆
package com.test.ddz; import com.test.alipay.Iservice;
import com.test.alipay.Iservice.Stub; import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.view.Menu;
import android.view.View;
import android.widget.Toast; public class MainActivity extends Activity { private Myconn conn;
private Iservice iservice; //我们定义的中间人对象 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //[1]调用bindService 获取我们定义的中间人对象
Intent intent = new Intent();
intent.setAction("com.itheima.alipay"); conn = new Myconn();
//[2]绑定服务
bindService(intent, conn, BIND_AUTO_CREATE); } //点击按钮 买豆
public void click(View v) { try {
boolean result = iservice.callPay("abcdd", "123", 100); if (result) {
//支付成功
Toast.makeText(getApplicationContext(), "买豆成功", 1).show();
}else { Toast.makeText(getApplicationContext(), "买豆失败", 1).show();
} } catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} private class Myconn implements ServiceConnection{ @Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 获取中间人对象 iservice = Stub.asInterface(service);
} @Override
public void onServiceDisconnected(ComponentName name) { } } @Override
protected void onDestroy() {
//当Activity销毁的时候 解绑服务
unbindService(conn);
super.onDestroy();
} }
aidl的应用场景的更多相关文章
- Android之IPC(aidl)
IPC(Inter-Process Conmunication) 进程间通讯 在同一进程中,各个组件进行通信是十分方便的,普通的函数调用就可以解决:但是,对于处于不同进程中的组件来说,要进行通信,就需 ...
- Binder or AIDL的最简单实践
1.前言: 在Android开发中多进程的合理使用+进程间通信的IPC是一个比较难的点.特别是Android特有的Binder机制,非常复杂,对于应用层开发的初级开发工程师强求深入理解Binder机制 ...
- 让我们一起学习如何使用AIDL,它其实并不难(Android)
前言 该篇文件讲述的是AIDL最基本的使用(创建.调用),关于对于AIDL更深的认识,在后续的随笔中,会持续与大家分享并探讨. 正文 AIDL的定义(什么是AIDL?) AIDL的应用场景(AIDL可 ...
- day08 服务
pasting ]注册电话的监听 tm.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE); [4 ...
- 18_Android中Service的生命周期,远程服务,绑定远程服务,aidl服务调用,综合服务案例,编写一个应用程序调用远程支付宝远程服务场景
============================================================================ 服务的生命周期: 一.采用start的方式开始 ...
- Android 进程通信机制之 AIDL
什么是 AIDL AIDL 全称 Android Interface Definition Language,即 安卓接口描述语言.听起来很深奥,其实它的本质就是生成进程间通信接口的辅助工具.它的存在 ...
- android service 的各种用法(IPC、AIDL)
http://my.oschina.net/mopidick/blog/132325 最近在学android service,感觉终于把service的各种使用场景和用到的技术整理得比较明白了,受益颇 ...
- AIDL
在介绍跨程序进程间通信AIDL前,先看一下本程序activity与某个服务是怎么绑定在一起进行交互的. 需求:服务有两个方法.分别是播放音乐与停止播放音乐.该程序的活动要访问这两个方法,在activi ...
- Android AIDL SERVICE 双向通信 详解
http://www.cnblogs.com/punkisnotdead/p/5062631.html 起因 是这个blog 提到了 用webview 的时候 用开启子进程的方式 可以极大避免内存泄露 ...
随机推荐
- <数据结构>XDOJ261.理解哈夫曼树
问题与解答 问题描述: 假设用于通信的电文由 n(2≤n≤30)个字符组成,字符在电文中出现的频度(权值)为 w1 w2- wn,根据该权值集合构造哈夫曼树,并计算该树的带权路径长度. 输入说明: 输 ...
- Java EE数据持久化框架 • 【第5章 MyBatis代码生成器和缓存配置】
全部章节 >>>> 本章目录 5.1 配置MyBatis Generator 5.1.1 MyBatis Generator介绍 5.1.2 MyBatis Generat ...
- 显示器接口VGA、DVI、HDMI、DP
1.说明 对于显示器接口类型, 常见的接口有VGA.DVI.HDMI.DP这四种, 当然还有其他类型接口, 本文主要介绍上面四种接口, 介绍接口的基本规格参数和外形等, 以及这四种接口之间的联系和区别 ...
- Spring @Bean 注解的使用
使用说明 这个注解主要用在方法上,声明当前方法体中包含了最终产生 bean 实例的逻辑,方法的返回值是一个 Bean.这个 bean 会被 Spring 加入到容器中进行管理,默认情况下 bean 的 ...
- centos7 安装jdk 脚本
下载安装包 链接:https://pan.baidu.com/s/10-U54WwoEaCC9Afj58owJA 提取码:jdk8 写如脚本 vi ***.sh #!/bin/bash #instal ...
- vue 前进刷新后退不刷新
这边是router-view部门的写法: <keep-alive> <router-view v-if="$route.meta.keepAlive"/> ...
- “老”的Flexbox和“新”的Flexbox
本文由大漠根据Chris Coyier的<"Old" Flexbox and "New" Flexbox>所译,整个译文带有我们自己的理解与思想,如 ...
- .NET Core 利用委托进行动态流程组装
引言 在看.NET Core 源码的管道模型中间件(Middleware)部分,觉得这个流程组装,思路挺好的,于是就分享给大家.本次代码实现就直接我之前写的动态代理实现AOP的基础上直接改了,就不另起 ...
- JavaScript DOM 基础操作
JavaScript DOM 基础操作 一.获取元素的六方式 document.getElementById('id名称') //根据id名称获取 document.getElementsByclas ...
- golang中接口对象的转型
接口对象的转型有两种方式: 1. 方式一:instance,ok:=接口对象.(实际类型) 如果该接口对象是对应的实际类型,那么instance就是转型之后对象,ok的值为true 配合if...el ...