android studio 使用 aidl(二)异步回调
2024-09-08 01:40:04
基础使用请移步 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(三)权限验证
最新文章
- SqlServer SET IDENTITY_INSERT ON | OFF
- 神兵利器——Alfred
- 寻觅[Getting Answers]
- Java Web学习笔记8
- phonegap android 输入法弹出会遮盖表单框的解决办法
- python文件操作实例
- Timus Online Judge 1001. Reverse Root
- ThinkPHP中简单的CURD操作
- 线性表 - 从零开始实现by C++
- SSL证书在线工具
- Linux下如何卸载HP_LoadGenerator
- SQL 存储过程加事务的使用
- angular 跳转页面时传参
- python 安装 memcache
- 关于MySQL性能的比较
- JS功能代码集锦
- 横瓜执导众程序员开展大讨论关于C、JAVA及其它主流IT技术使用情况和优点缺点。
- echarts图表里遇到的问题
- Ubuntu彻底删除/卸载mysql,php,apache
- 重构tableview!