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

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"

使用说明

基础工具使用

// 显示Toast
ToastUtils.showShort("Hello AndroidUtilCode");

// 启动工具类Activity
UtilCodeApi 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.Api
public 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.Api
public 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智能小助手)
公众号二维码

posted @ 2025-08-21 21:31  qife  阅读(22)  评论(0)    收藏  举报