基于JSON RPC的一种Android跨进程调用解决方案了解一下?

本文介绍了基于JSON RPC的一种Android跨进程通信解决方案——Bifrost,它简化了AIDL的繁琐操作,提供简单易用的接口调用方式。Bifrost通过动态代理和aidl通道实现进程间通信,但可能因序列化和反射操作带来性能影响。作者计划进一步优化,支持异步操作和线程池等特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于JSON RPC的一种Android跨进程调用解决方案了解一下?


简介

今天上午,看票圈有朋友分享爱奇艺的跨进程通信框架——Andromeda,觉的还是有点意思的。
以前项目中用到跨进程这种解决方案比较少,今天看了下Andromeda,发现调用方式很简单。

恰好最近一年都是在做后端工作,想到了Json RPC的方案,其实Android跨进程接也是一种rpc调用方式,那么参考json rpc协议,通过aidl通道也可以很简单一种跨进程通信方式,而且使用方式也很简单。

说干就干,但是作为了高级程序员,肯定要给项目起个名字高大上的名字——Bifrost(彩虹桥),参考复联电影雷神上面的彩虹桥,寓意可以传送到各地,也表达Android跨进程通信可以畅通无阻。

使用方式

在Android系统的跨进程调用需要用到AIDL方式,但是呢,操作起来非常麻烦,可以传递基本类型,如果需要自定义类,那么还需要实现Parcelable接口,同时也要写不少代码,操作起来繁琐。

像平常一样,先定义一个接口和实现类就行了。

public interface INumberApi {
   
   

    int add(int a, int b);
}
public class NumberApiImpl implements INumberApi {
   
   

    @Override
    public int add(int a, int b) {
        return a + b;
    }
}

注册下接口和实现类,因为暂时没有用到依赖注入工具,同时我也不想把功能做的很复杂,暂时手动注册吧,做注册前,先做好初始化工作。

Bifrost.getInstance().init(this);
Bifrost.getInstance().register(IUserApi.class, new UserApiImpl());
Bifrost.getInstance().register(INumberApi.class, NumberApiImpl.class);

Bifrost暂时支持2个注册方式,kv都是class类型,还有就是k是class,v是接口实现类的一个对象。

调用方式也很简单。

IUserApi userApi = Bifrost.getInstance().getRemoteInstance(IUserApi.class);
User user = userApi.login("admin", "123456");

Timber.i("user = %s", user);

INumberApi numberApi = Bifrost.getInstance().getRemoteInstance(INumberApi.class);
int ret = numberApi.add(1, 2);

Toast.makeText(getApplicationContext(), "1 + 2 = " + ret, Toast.LENGTH_LONG).show();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值