返回

Jetpack架构组件学习(3)——Activity Results API使用

Android

页面跳转传值一直使用的是startActivityForResult方法,如今有了新的API实现方式,学习并稍微总结下.

1.前言

Activity Results API是Android Jetpack中一个新的API,它提供了一种更简单、更结构化的方式来处理异步结果。在本文中,我们将介绍如何使用Activity Results API,并将其与其他异步编程方法进行比较。

2.为什么我们需要Activity Results API?

传统的异步编程方法,如回调、RxJava和LiveData,都存在一些缺点。回调容易出错,RxJava和LiveData的学习曲线陡峭。Activity Results API提供了一种更简单、更结构化的方式来处理异步结果。它不需要编写任何回调,而且它的API非常简单。

3.如何使用Activity Results API?

Activity Results API的使用非常简单。首先,我们需要在清单文件中声明一个ActivityResultLauncher。ActivityResultLauncher是一个类,它负责启动一个活动并接收结果。

<activity android:name=".MainActivity">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

<activity android:name=".SecondActivity" />

接下来,我们需要在MainActivity中创建一个ActivityResultLauncher对象。

private val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
  if (result.resultCode == Activity.RESULT_OK) {
    // 处理结果
  }
}

最后,我们可以使用ActivityResultLauncher对象来启动一个活动。

startForResult.launch(Intent(this, SecondActivity::class.java))

4.Activity Results API与其他异步编程方法的比较

Activity Results API与其他异步编程方法相比,具有以下优势:

  • 更简单 :Activity Results API的API非常简单,不需要编写任何回调。
  • 更结构化 :Activity Results API提供了一种更结构化的方式来处理异步结果。
  • 更安全 :Activity Results API避免了回调中常见的一些错误。

5.何时使用Activity Results API?

Activity Results API非常适合用于处理简单的异步任务,例如启动一个活动并接收结果。对于更复杂的异步任务,可以使用RxJava或LiveData。

6.Activity Results API的示例

以下是一个使用Activity Results API的示例。这个示例演示了如何启动一个活动并接收结果。

class MainActivity : AppCompatActivity() {

  private val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
      // 处理结果
    }
  }

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    // 启动一个活动
    startForResult.launch(Intent(this, SecondActivity::class.java))
  }
}

这个示例演示了如何使用Activity Results API来启动一个活动并接收结果。

7.结论

Activity Results API是一种新的API,它提供了一种更简单、更结构化、更安全的方式来处理异步结果。它非常适合用于处理简单的异步任务,例如启动一个活动并接收结果。对于更复杂的异步任务,可以使用RxJava或LiveData。