公众号「稀有猿诉」 原文链接 让Activity更加优雅地跳转
有过Android开发经验的小伙伴对startActivityForResult以及onActivityResult一定不陌生,正是这一对API让组件 的复用变成可能。今天就来学习一下如何在函数式的范式中驾驭Activity的跳转。

缘起
系统组件复用,特别是Activity的复用,是Android系统中非常重要的一个设计理念。组件复用打破了应用程序之间的壁垒,在整个系统范围内可以共享和复用一些公共的组件,比如像打开网页,拍照片,查看图片等等,开发者不必再用原始API去实现一套,直接使用startActivityForResult和onActivityResult就可以取到需要的资源。
这套API最大的问题在于它并不是常规的异步式的回调,调用了startActivityForResult后,结果的处理,必须要在Activity的继承体系内覆写onActivityResult,并且因为Activity实例只能由系统创建,这就导致了组件复用的逻辑必须都在Activity内部。这就导致了Activity的体积通常会相当的臃肿,上千行,甚至大几千行的Activity随处可见。理想的情况下Activity,作为一个系统的容器和接口,应该越薄越好,但要能把逻辑移出Activity才行。
另一方面,onActivityResult无法在函数式的情境中使用,因为它会跑到函数外面去,比如在Jetpack Compose中就无法直接使用startActivityForResult和onActivityResult。
为了解决这两个问题,就需要使用到Jetpack中的Activity Result API了。
Activity Result API的使用方法
在Jetpack的AndroidX中的Activity和Fragment中,可以像常规的回调那样向系统注册一个处理result的回调,一旦系统派发了activity result就能被系统回调到。
注意: 这里提到的方法都在AndroidX中的ComponentActivity和Fragment里面,也就是说要继承AndroidX中的组件才可以。
注册一个activity result回调
这套API的方式是在ComponentActivity和Fragment中,提供了一个

最低0.47元/天 解锁文章
1265

被折叠的 条评论
为什么被折叠?



