基础使用请移步 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(三)权限验证

最新文章

  1. SqlServer SET IDENTITY_INSERT ON | OFF
  2. 神兵利器——Alfred
  3. 寻觅[Getting Answers]
  4. Java Web学习笔记8
  5. phonegap android 输入法弹出会遮盖表单框的解决办法
  6. python文件操作实例
  7. Timus Online Judge 1001. Reverse Root
  8. ThinkPHP中简单的CURD操作
  9. 线性表 - 从零开始实现by C++
  10. SSL证书在线工具
  11. Linux下如何卸载HP_LoadGenerator
  12. SQL 存储过程加事务的使用
  13. angular 跳转页面时传参
  14. python 安装 memcache
  15. 关于MySQL性能的比较
  16. JS功能代码集锦
  17. 横瓜执导众程序员开展大讨论关于C、JAVA及其它主流IT技术使用情况和优点缺点。
  18. echarts图表里遇到的问题
  19. Ubuntu彻底删除/卸载mysql,php,apache
  20. 重构tableview!

热门文章

  1. Linux&C ——信号以及信号处理
  2. Oracle的主要组件和基本概念
  3. Linux mem 2.4 Buddy 内存管理机制
  4. vscode输出窗口中文乱码
  5. SpringBoot 整合 Mybatis-Plus + Mysql
  6. 暑假算法练习Day3
  7. Pycharm下载安装详细教程
  8. Typora下载安装教程
  9. 通过修改host加速访问GitHub
  10. python实现轮廓发现