Google推荐使用ActivityResult API来替代onActivityResult

发布时间 2023-04-20 17:36:52作者: 施行

onActivityResult并没有废弃,但是在Android 10及以上版本中,Google推荐使用ActivityResult API来替代旧的方式。

使用ActivityResult API需要引入Activity Result库,具体步骤如下:

1.在app的build.gradle中添加依赖:

 
dependencies {
    def activity_version = "1.3.0"
    implementation "androidx.activity:activity-ktx:$activity_version"
    implementation "androidx.fragment:fragment-ktx:$activity_version"
}

  

2.使用registerForActivityResult()方法来注册需要处理的Activity result,并在回调中处理结果。

示例代码如下:

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

  

3.使用someActivityResultLauncher.launch(intent)启动需要处理结果的Activity。

示例代码如下:

val intent = Intent(this, SomeActivity::class.java)
someActivityResultLauncher.launch(intent)

 

使用ActivityResult API相较于旧的方式更加简洁、可读性更高,并且能够处理更多的场景,如请求权限、打开文件等。因此,建议尽量采用ActivityResult API来处理Activity result。