美文网首页
android AIDL在同一工程下的使用方式

android AIDL在同一工程下的使用方式

作者: heheworld | 来源:发表于2020-04-25 23:34 被阅读0次

AIDL 一直都有听说,主要应用场景是跨进程通信,分客户端和服务端,网上的代码一大堆。最近项目刚好用到,手写下遇到很多问题,记下来。

需求:同一个工程,一个service使用remote 作为独立进程中的service,需要跟主进程通信,service中负责轮询数据,有特定数据后,传递给主进程。

但网上demo多是写Client,Server两个工程,也都是Client主动发起的一次性请求,只能自己倒腾了。不写不知道,一写发现好多地方都卡壳了,记下来

  • Q:只有一个工程,但需要通过aidl实现跨进程,怎么弄?
    A: 正常操作,在/src/main目录下,建立跟java同级的aidl文件夹,新建对应的aidl文件(包名跟java下的包名一致,记得是自动建立的,如果不是,就手动建下)

    截图如下: a.png
  • Q:AIDL 内需引用到自定义的类和接口,怎么办?
    A: 正常写AIDL文件,但自定义类需要实现parcelable接口(parcelable类型),在引用文件内需手动import下该自定义类。
    如下IMyAidlInterface 使用到了 Student类,则对应的AIDL应该这么写:

// Student.aidl
package com.nico.test4aidl;
// Declare any non-default types here with import statements
parcelable Student;  //Student.aidl 表示是个parcelable 类型的对象,供其他AIDL接口使用
// IMyAidlInterface.aidl
package com.nico.test4aidl;

// Declare any non-default types here with import statements
import com.nico.test4aidl.Student;  //这里手动引入Student
import com.nico.test4aidl.IMyCallback;
interface IMyAidlInterface {
Student getStudent();
void changeData();
void registerCallback(IMyCallback callback);
void unRegisterCallback();
}

如果用到其他的接口,(我这边需求是客户端通过aidl在服务端注册,服务端在处理,如果有触发会通知客户端,于是通过aidl
可以这么来写)

// IMyCallback.aidl
package com.nico.test4aidl;
// Declare any non-default types here with import statements
interface IMyCallback {
    /**
     * Demonstrates some basic types that you can use as parameters
     * and return values in AIDL.
     */
    void callback(boolean flag);  //客户端给服务端的回调方法
}
  • Q: 怎么启动?
    A:正常bindservice,startservice都可以,Intent 是使用setComponent来指定对应的service。服务端service在配置文件里加上:remote。

大概就这么多了。平时还是需要多写代码,纸上得来终觉浅。

最后,遇到一个问题,在服务端的service内,aidl接口方法想调用service内的方法,kotlin来写总是提示不对,java写就没问题,对kotlin不熟悉,没有深入去研究。

相关文章

  • android AIDL在同一工程下的使用方式

    AIDL 一直都有听说,主要应用场景是跨进程通信,分客户端和服务端,网上的代码一大堆。最近项目刚好用到,手写下遇到...

  • Android中的AIDL

    Android中的AIDL使用详解 AIDL使用解析 Android进阶之AIDL的使用详解

  • AIDL

    Android中AIDL的基本用法Android 中AIDL的使用与理解Android AIDL使用详解彻底明白A...

  • Android Apk打包的流程(简单)

    (1)打包资源文件。 (2)处理aidl文件,生成相应java 文件。对于没有使用到aidl的android工程,...

  • Android 进程间通信AIDL(二)

    本文主要来分析一下AIDL实现原理,在Android进程间通信AIDL(一)学习如何使用AIDL时,在Client...

  • Android Aidl 的使用

    Android Aidl 的使用 Binder框架 -- android AIDL 的使用 Binder框架 – ...

  • AIDL学习

    源于《Android开发艺术探索》,作者讲的跨进程通信之AIDL。作者是在同一个moudle下写的aidl,我为了...

  • Android AIDL 进程间通信使用笔记

    Android AIDL 进程间通信使用笔记 AIDL AIDL是Android Interface defini...

  • Android AIDL使用 & 工作原理

    首先回顾下AIDL的使用。1.新建aidl文件,MyAidlServer.aidl . 同步下工程,就会生成对应a...

  • AIDL解析

    AIDL是Android中IPC方式中的一种。 AIDL的使用 创建aidl后缀的文件,服务端和客户端各保存一份,...

网友评论

      本文标题:android AIDL在同一工程下的使用方式

      本文链接:https://www.haomeiwen.com/subject/utmcwhtx.html