我们在开发过程中不管是有意还是无意,难免会涉及到多进程,而进程之间的通信更是一个大问题,虽然有诸如activity,broadcast,aidl等这样现成的工具,但是总是存在着局限性或者技术实现上的不友好。 这个框架就是为了解决这个问题而诞生的,封装了你熟悉的EventBus,还有管理Activity的,以及SharedPreferences。如果这些不满足你的业务需求,可以自定义。
implementation 'com.shouzhong:ProcessBridge:1.0.0'
在application的onCreate方法中
ProcessBridgeUtils.init(List<IProcessBridge>);
ProcessBridgeUtils.getEventBus()
ProcessBridgeUtils.getActivityManager()
ProcessBridgeUtils.getSP()
具体使用请参考demo
请参考源码 EventBus SharedPreferences ActivityManager
ProcessBridgeUtils.getEventBus()
方法名 | 说明 |
---|---|
register | 注册 |
isRegistered | 是否注册 |
unregister | 反注册 |
post | 发送事件 |
cancelEventDelivery | 取消事件传递 |
postSticky | 发送粘滞事件 |
getStickyEvent | 获取某个粘滞事件 |
removeStickyEvent | 移除某个粘滞事件 |
removeAllStickyEvents | 移除所有粘滞事件 |
hasSubscriberForEvent | 是否订阅某个类型的事件 |
ProcessBridgeUtils.getActivityManager()
方法名 | 说明 |
---|---|
size | 获取所有进程所有activity数量 |
size(int) | 获取某个进程所有activity数量 |
contains | 在所有进程中是否有匹配cls的activity |
contains(int) | 在某个进程中是否有匹配cls的activity |
get(Class) | 获取最近的匹配cls的activity,只能获取当前进程的activity,否则会抛异常 |
get(int) | 获取activity,只能获取当前进程的activity,否则会抛异常 |
finish | finish所有进程的cls匹配activity |
exit(int) | finish某个进程所有的activity |
exit | finish所有进程的所有activity |
ProcessBridgeUtils.getSP()
方法名 | 说明 |
---|---|
getAll | 获取所有 |
getString | 获取String |
getStringSet | 获取Set |
getInt | 获取int |
getLong | 获取long |
getFloat | 获取float |
getBoolean | 获取Boolean |
contains | 是否包含 |
putString | 保存String |
putStringSet | 保存Set |
putInt | 保存int |
putLong | 保存long |
putFloat | 保存float |
putBoolean | 保存boolean |
remove | 删除 |
clear | 清空 |
- 如果在子进程刚启动时在主线程调有返回值的方法,主线程会锁住卡死,建议有这种操作的在子线程中调用
- 对于EventBus的粘滞事件,请重写equals,确保调用removeStickyEvent(Object)时能真正移除,当然如果不想重写equals,那建议调用removeStickyEvent(Class)移除
- 对于EventBus建议尽量少用或者不用带泛型事件,可能会有bug
- 数据传输是基于json的,所以请保证你定义的事件可序列化
-keep class com.shouzhong.** {*;}
-dontwarn com.shouzhong.**
-keepattributes *Annotation*
-keepclassmembers class * {
@org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
<init>(java.lang.Throwable);
}