AndroidUtilCode
AndroidUtilCode 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo 和单元测试,利用其封装好的 APIs 可以大大提高开发效率。
功能特性
丰富的工具类集合:包含主工具类模块 utilcode 和子工具类模块 subutil
模块化通讯支持:提供 ApiUtils 用于模块间通信,比 SPI 更适合 Android
高效事件总线:BusUtils 性能优于 EventBus,支持线程安全和粘性事件
持续维护更新:定期发布新版本,修复问题并添加新功能
完善的文档:提供中英文文档和详细的使用示例
安装指南
在项目根目录的 build.gradle 中添加依赖:
buildscript { dependencies { classpath 'com.blankj:api-gradle-plugin:latest.release' classpath 'com.blankj:bus-gradle-plugin:latest.release' }}
复制代码
在 application 模块中应用插件:
apply plugin: "com.blankj.api"apply plugin: "com.blankj.bus"
复制代码
添加 AndroidUtilCode 依赖:
api "com.blankj:utilcode:latest.release"
复制代码
使用说明
基础工具使用
// 显示ToastToastUtils.showShort("Hello AndroidUtilCode");
// 启动工具类ActivityUtilCodeApi api = ApiUtils.getApi(UtilCodeApi.class);api.startUtilCodeActivity(context);
复制代码
模块间通信
定义 API 接口:
public abstract class UtilCodeApi extends ApiUtils.BaseApi { public abstract void startUtilCodeActivity(Context context); public abstract void testCallback(Callback callback);}
复制代码
实现 API:
@ApiUtils.Apipublic class UtilCodeApiImpl extends UtilCodeApi { @Override public void startUtilCodeActivity(Context context) { CoreUtilActivity.Companion.start(context); }}
复制代码
事件总线使用
// 注册事件接收@BusUtils.Bus(tag = "test_event")public void onTestEvent(String message) { ToastUtils.showShort(message);}
// 发送事件BusUtils.post("test_event", "Hello BusUtils");
复制代码
核心代码
应用基类
public class LauncherApp extends CommonApplication { private static LauncherApp sInstance;
public static LauncherApp getInstance() { return sInstance; }
@Override public void onCreate() { super.onCreate(); sInstance = this; }}
复制代码
API 实现类
@ApiUtils.Apipublic class UtilCodeApiImpl extends UtilCodeApi { @Override public void startUtilCodeActivity(Context context) { CoreUtilActivity.Companion.start(context); }
@Override public void testCallback(Callback callback) { if (callback != null) { callback.call(); } }}
复制代码
MVP 架构实现
public class MvpPresenter extends BasePresenter<MvpView> implements MvpMvp.Presenter { @Override public void updateMsg() { getView().setLoadingVisible(true); getModel(MvpModel.class).requestUpdateMsg(new Utils.Consumer<String>() { @Override public void accept(String s) { if (isAlive()) { getView().showMsg(s); getView().setLoadingVisible(false); } } }); }}
复制代码
ASM 字节码处理
public class ApiClassVisitor extends ClassVisitor { @Override public void visitEnd() { super.visitEnd(); if (hasAnnotation) { if (!isMock) { ApiInfo apiInfo = mApiImplMap.get(superClassName); if (apiInfo == null || apiInfo.isMock) { mApiImplMap.put(superClassName, new ApiInfo(className, false)); } } } }}
复制代码
更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码
办公AI智能小助手
评论