写点什么

Android 开发者的瑞士军刀:高效工具库 AndroidUtilCode

作者:qife122
  • 2025-08-21
    福建
  • 本文字数:1665 字

    阅读完需:约 5 分钟

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智能小助手


用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
Android开发者的瑞士军刀:高效工具库AndroidUtilCode_android_qife122_InfoQ写作社区