返回

轻松访问 ActivityResult,告别 RxActivityResult 和 Rx 束缚!

Android

简化 Android ActivityResult 管理:使用 QQResult 库

随着 Android 生态系统的不断发展,管理 ActivityResult 变得越来越复杂。特别是当涉及到异步和 Rx 绑定时,RxActivityResult 库曾风靡一时,但其与 Rx 的深度集成也让许多开发者望而却步。

为了解决这一痛点,QQResult 应运而生。它将界面回传值和 AOP 转化分开,为开发者提供了更灵活和轻量级的解决方案。

QQResult 的优势

  • 告别 Rx 束缚: QQResult 不依赖于 Rx,开发者可以自由选择自己的异步处理方式,避免内存泄漏风险。
  • 轻量级且灵活: QQResult 体积小巧,仅包含 ActivityResult 管理核心功能,不会引入不必要的依赖。
  • 高度可定制: QQResult 支持对 ActivityResult 的任意字段进行 AOP 转化,开发者可以根据需要定制回传值处理逻辑。

使用 QQResult 获取 ActivityResult

使用 QQResult 获取 ActivityResult 非常简单,只需要三步:

1. 集成 QQResult:

在 Gradle 文件中添加 QQResult 依赖:

implementation 'com.github.getActivityResult:qqresult:1.0.5'

2. 请求 ActivityResult:

使用 QQResult 发起 ActivityResult 请求:

ActivityResultLauncher<Intent> launcher = QQResult.register(this);
launcher.launch(intent);

3. 获取 ActivityResult:

在 onActivityResult 方法中获取 ActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    QQResult.handleActivityResult(this, requestCode, resultCode, data);
}

对 ActivityResult 进行 AOP 转化

QQResult 支持对 ActivityResult 的任意字段进行 AOP 转化,实现方式如下:

QQResult.registerActivityResultConverter(MyActivityResultConverter.class);

其中,MyActivityResultConverter 是一个实现 ActivityResultConverter 接口的类,可以对 ActivityResult 进行自定义处理。

QQResult 的应用场景

QQResult 广泛应用于需要在 Activity 之间传递数据的场景,例如:

  • 登录/注册
  • 选择图片/文件
  • 获取地理位置
  • 二维码扫描

总结

QQResult 是一个轻量级且灵活的库,它解决了 RxActivityResult 的痛点,为开发者提供了更方便快捷的 ActivityResult 管理方式。通过使用 QQResult,开发者可以轻松获取 ActivityResult,并根据需要对其进行 AOP 转化,从而实现更加灵活和高效的界面交互逻辑。

常见问题解答

  1. QQResult 与 RxActivityResult 有什么区别?

    QQResult 不依赖于 Rx,开发者可以自由选择自己的异步处理方式,避免内存泄漏风险。

  2. QQResult 的性能如何?

    QQResult 体积小巧,仅包含 ActivityResult 管理核心功能,不会引入不必要的依赖,因此性能非常优异。

  3. QQResult 支持哪些版本的 Android?

    QQResult 支持 Android 5.0 及以上版本。

  4. QQResult 如何定制回传值处理逻辑?

    QQResult 支持对 ActivityResult 的任意字段进行 AOP 转化,开发者可以根据需要定制回传值处理逻辑。

  5. QQResult 是否支持多语言?

    QQResult 本身不支持多语言,但开发者可以自行添加多语言支持。