android studio 使用 aidl(二)异步回调
基础使用请移步 android studio 使用 aidl (一)
首先建立在server端建立两个aidl文件
ITaskCallback.aidl 用于存放要回调client端的方法
// ITaskCallback.aidl
package com.txy.umpay.aidl;
// Declare any non-default types here with import statements
interface ITaskCallback {
void actionPerformed(int actionId);
}
ITaskBinder.aidl 用于存放供给client端调用的方法
// ITaskBinder.aidl
package com.txy.umpay.aidl;
// Declare any non-default types here with import statements
import com.txy.umpay.aidl.ITaskCallback;//一定要注意导包,不然Make就报错了
interface ITaskBinder {
boolean isTaskRunning();
void stopRunningTask();
void registerCallback(ITaskCallback cb);
void unregisterCallback(ITaskCallback cb);
}
接下来Build-->Make Module app就能生成好相应的java文件了
接下来 看下MAIDLService里面怎么写的,贴一下关键代码:
private final ITaskBinder.Stub mBinder = new ITaskBinder.Stub() {
public void stopRunningTask() {
}
public boolean isTaskRunning() {
return false;
}
public void registerCallback(ITaskCallback cb) {
if (cb != null) {
mCallbacks.register(cb);
try {
for (int i = 1; i < 6; i++) {
cb.actionPerformed(i);
Thread.sleep(5000);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void unregisterCallback(ITaskCallback cb) {
if (cb != null) {
mCallbacks.unregister(cb);
}
}
};
final RemoteCallbackList<ITaskCallback> mCallbacks = new RemoteCallbackList<ITaskCallback>();
接下来把ITaskCallback.aidl和ITaskBinder.aidl 一起拷贝到客户端,同样Build-->Make Module app就能生成好相应的java文件了
在来看下客户端是怎么调用的:(此处都是关键代码,全的代码都是android studio 使用 aidl (一)这里有)
绑定代码:
//使用意图对象绑定开启服务
Intent intent = new Intent();
//在5.0及以上版本必须要加上这个
intent.setPackage("com.txy.umpay.aidl");
intent.setAction("com.txy.umpay.aidl.MAIDLService");
bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE);
调用代码这个是在线程里面调用的:
try {
if (service != null) {
service.registerCallback(mCallback);
}
} catch (RemoteException e) {
e.printStackTrace();
}
mCallback的代码:
private ITaskCallback mCallback = new ITaskCallback.Stub() {
public void actionPerformed(int id) {
Log.e("123", "calculation" + id);
}
};
运行结果:
下一篇:android studio 使用 aidl(三)权限验证
android studio 使用 aidl(二)异步回调的更多相关文章
- android studio 使用 aidl(三)权限验证
这篇文章是基于android studio 使用 aidl (一) 和 android studio 使用 aidl(二) 异步回调 下面的代码都是简化的,如果看不懂请先移步上2篇文章 网上的东西太坑 ...
- android studio 使用 aidl(一)基础用法
最近公司需要开发一个项目用的到aidl,之前研究过eclipse版本的,但是好久了一直没用,现在需要捡起来,但是现在都用android studio了,所以查了下资料 都不是很全,我在这里总结一下,方 ...
- Android studio 使用心得(四)—android studio 多渠道打包(二)
Android studio 使用心得(四)—android studio 多渠道打包 这篇文章讲了一种打包方式.是直接在android studio 里面可视化操作,结合配置文件.我个人觉得严格上来 ...
- Android Studio系列教程二--基本设置与运行
Android Studio系列教程二--基本设置与运行 2014 年 11 月 28 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处! 上面一篇博客,介绍了Studio的 ...
- Android studio使用心得(二)— 打包签名apk发布
1.—–Android Studio菜单 Build->Generate Signed APK 2.——Create new.. 3.——-跟eclipse里面一样,添加keystore 信 ...
- 【转载】Android Studio Service AIDL 详解
公司产品之前IM这块存在很多问题,消息到达率低,加上协议上有些问题,丢消息频繁,所以需要重构IM,AIDL不能解决以上问题.好吧!那AIDL可以解决什么问题?什么是AIDL? 什么是AIDL? AID ...
- Android Binder机制中的异步回调
“Binder通信是同步而不是异步的”,但是在实际使用时,是设计成客户端同步而服务端异步. 看看Framwork层的各service类java源码便会知道,在客户端调用服务端的各种方法时,通常会传递一 ...
- Android Studio 使用教程(二十五)之运行Android Studio工程
一.Android虚拟设备入口 上期我们使用了Android Studio创建了HeloWorld工程,要想运行该工程,首先需要一个Android虚拟设备来模拟Android程序的运行. 重新打开An ...
- 第二章:Android Studio概述(二)[学习Android Studio汉化教程]
The Main Menu Bar 主菜单栏 主菜单栏位于Android Studio的最上面,你几乎可以利用主菜单和其子菜单来执行任何操作.不像Android Studio中其他的一些菜单,主菜单 ...
随机推荐
- 检查redis是否正常运行
[XX@XXX]$ ps -ef | grep redisXX 8047 1 0 10:06 ? 00:00:03 redis-server *:6379XX 9983 9802 0 11:2 ...
- journalctl常用命令
journalctl -xe 查看全部日志# 以flow形式查看日志 $ journalctl -f # 查看内核日志 $ journalctl -k # 查看指定服务日志 $ journalctl ...
- DDL数据定义语言
DDL数据定义语言 (一)概述 DDL(Data Definition Language):数据定义语言,用来定义数据库对象,库.表.列等:创建.删除.修改 库,表结构.主要分为操作数据库的DDL和操 ...
- 体验webhooks
一.webhooks是什么 webhooks是一种实现在web api跟web service之间的发布订阅的轻量级的模式:当服务中心某个事件发生的时候,就会向订阅者发送一个POST请求形式的通知,这 ...
- asp.net中挺高性能的24种方法
那性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点. 1.debug=「false」 当创建 ASP.NET Web应用程序,默认设置为「true」.开发过程中,设置 ...
- string类运用:特殊的翻译
特殊的翻译 小明的工作是对一串英语字符进行特殊的翻译:当出现连续且相同的小写字母时,须替换成该字母的大写形式,在大写字母的后面紧跟该小写字母此次连续出现的个数:与此同时,把连续的小写字母串的左侧和右侧 ...
- Hadoop HA集群 与 开发环境部署
每一次 Hadoop 生态的更新都是如此令人激动 像是 hadoop3x 精简了内核,spark3 在调用 R 语言的 UDF 方面,速度提升了 40 倍 所以该文章肯定得配备上最新的生态 hadoo ...
- php开发微信公众号(1)
最近找了个方向提升自己的技术站,发现微信是一个不错的选择 1.入门 申请公众号这些都不说了,另外你必须需要php.h5.MySQL等基本知识才能看懂此文章,还需要有一个服务器及域名,由于我遇见问题也会 ...
- selenium实战:窗口化爬取*宝数据(附源码链接)
完整代码&火狐浏览器驱动下载链接:https://pan.baidu.com/s/1pc8HnHNY8BvZLvNOdHwHBw 提取码:4c08 双十一刚过,想着某宝的信息看起来有些少很难做 ...
- 分享一下Eclipse中节省时间的技巧吧
[初级技巧] ★★ 鼠标放在一个类名上面,会显示Javadoc.也可以通过屏幕下方的Javadoc面板来查看(你可以把它看成是MSDN的Java版). ★ 每个函数的第一行,左边有个圆圈,单击这个圆圈 ...
