ActivityResultLauncher
本身不是一个 Activity。它是 Android Jetpack 库中 ActivityResultContracts
API 的一部分,用于处理异步的 Activity 或 Fragment 结果。它提供了一种更简洁、类型安全的方式来启动一个 Activity 或 Fragment,并接收其结果,而无需使用传统的 startActivityForResult
或 Fragment.setTargetFragment
方法。
ActivityResultLauncher
是一个接口,它定义了一个 launch
方法,该方法接受一个参数(这个参数的类型取决于你使用的 ActivityResultContract
),并启动一个与之关联的 Activity 或 Fragment。当这个 Activity 或 Fragment 结束时,你可以通过传递给 registerForActivityResult
的 ActivityResultCallback
来接收和处理结果。
这里是一个简单的例子,展示了如何使用 ActivityResultLauncher
来启动一个拍照的 Activity 并接收图片结果:
ActivityResultLauncher<String> takePictureLauncher = registerForActivityResult( | |
new ActivityResultContracts.TakePicture(), | |
new ActivityResultCallback<Boolean>() { | |
@Override | |
public void onActivityResult(Boolean result) { | |
if (result) { | |
// 拍照成功,处理图片 | |
} else { | |
// 拍照失败 | |
} | |
} | |
} | |
); | |
// 当需要拍照时 | |
String fileName = ... // 指定图片保存的文件名 | |
takePictureLauncher.launch(fileName); |
在这个例子中,ActivityResultLauncher<String>
的类型参数 String
对应于 ActivityResultContracts.TakePicture
需要的参数(即图片保存的文件名)。当调用 takePictureLauncher.launch(fileName)
时,系统会启动一个拍照的 Activity。拍照完成后,无论成功还是失败,都会调用你提供的 ActivityResultCallback
来处理结果。
总之,ActivityResultLauncher
是一个用于处理 Activity 或 Fragment 结果的工具,而不是一个 Activity。