Result Api registerForActivityResult

onActivityResult 和 startActivityForResult 等方法都已过时,被打上了弃用标签。

startActivityForResult
onActivityResult
startIntentSenderForResult

根据谷歌新发布的Result Api,可以看到对应的替代方法。


建议

详细可以了解官方api介绍

开发者地址:https://developer.android.google.cn/training/basics/intents/result#kotlin

很不凑巧,我的项目中就存在 startIntentSenderForResult,startActivityForResult 以及 onActivityResult 的使用。

代码示例:startActivityForResult(intent,Activity.RESULT_FIRST_USER)
startIntentSenderForResult(editPendingIntent.intentSender, Activity.DEFAULT_KEYS_SHORTCUT, null, 0, 0, 0, requireArguments())

这里值得注意的是,Activity中需要在onCreate方法里去注册,而Fragment中需要在onCreate和onAttach方法里注册。


警告

在源码中发现跟Lifecycle有产生关联,所以官方介绍,如果需要单独类中使用注册,需要加入Lifecycle。


image.png

所以我遵守规则。


image.png

从上图可以看到,我已经把onActivityResult中的结果逻辑移到了registerForActivityResult回调中。
onActivityResult不复存在。

而我只需要在原本的执行处替换为launch便可。


image.png

到这里api更换成功。

你可能感兴趣的:(Result Api registerForActivityResult)