在Android开发中,我们经常使用startActivityForResult来获取activity执行完操作的返回值,但是在新版本的AndroidX中已经推荐使用Activity Result API来替换它。
ActivityResultLauncher的使用用法
以上是ActivityResultLauncher最简单的用法,直接使用StartActivityForResult作为约定,在实际开发中,使用ActivityResultLauncher分为三步。
如果要使用ActivityResultLauncher,首先需要引入依赖库,最新版本参考官方文档。
比如说,我们在启动Activity时需要传入Int类型的参数,在执行完Activity之后得到String类型结果,我们可以这样创建约定。
这样其实是把封装和解析Intent的工作摘出来了,减轻Activity的工作量,遵循了单一职责原则。
使用registerForActivityResult方法注册上一步创建的约定,并且传入一个ActivityResultCallback回调,用于处理Activity处理之后返回的结果。
我们只需要调用第二步创建的activityLauncher.launch(..)方法即可启动Activity,并且传入我们指定的Int类型的参数。
另外,它还可以用来简化申请运行时权限,我们可以使用RequestPermission和RequestMultiplePermissions约定来申请单个或多个运行时权限,比如申请相机权限,这部更多内容可以参考官方文档。
下面是一个完整的示例项目。