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 智能小助手)公众号二维码
办公AI智能小助手
评论