Jetpack Compose 的使用场景

更新日期: 2022-01-06 阅读次数: 2817 字数: 383 分类: Android

去年投入了极大的热情学习了 Jetpack Compose,本以为可以永远地踢开 XML layout。写了个列表加详情页的简单 Android App,也没有遇到太多的问题,即便遇到了,也找到了解决方案。有的洋洋自得。但是在第二版想添加 Admob 广告时遇到了大坑,没有解决掉。于是,我觉得必须反思一下 Jetpack Compose 的使用场景,或者说使用方式。

jetpack compose 是否可以用在生产环境中

首先,compose 到底能否用在生产环境中,答案肯定是可以的。核心是怎么用的问题。

我在 reddit 上找到了一个非常高质量的讨论:

https://www.reddit.com/r/androiddev/comments/pys6mo/using_jetpack_compose_in_production/

里面有位大哥的总结非常细致,而且颇具实战性

I would definitely recommend using Jetpack Compose for production BUT. Don't let go of Fragments for now for things like navigation. You have to think of Jetpack Compose as a replacement for your xml layouts and NOTHING else.

DONT use jetpack compose navigation for production

DONT use jetpack compose navigation animations for production from google/accompanist GitHub.

DONT use Google maps in an AndroidView alone. Google Maps is designed to be attached to an Activity or a Fragment. If it's used in compose by itself it will completely destroy it's lifecycle and you'll have horrible load times, especially during navigation.

Special recommendations for these things that work especially well in compose:

  • Image loading
  • Theming
  • Carousels (with Google's pager layouts)
  • (performant) Animations
  • Previews (customizable for smaller screens, dark mode, etc)

Jetpack Compose 的正确使用方式

正像之前总结 Compose 中使用 Admob 的结论一样,完全可以在正式项目中使用 Jetpack Compose,但是前提是:

  • 外层用 XML Layout。部分使用 Compose View,防止踩坑
  • Compose Navigation 确实鸡肋,我也觉得不如直接用 Activity 或 Fragment 跳转方便,何况还有大量三方组件是基于 Activity 或 Fragment 实现的

参考

  • https://www.reddit.com/r/androiddev/comments/pys6mo/using_jetpack_compose_in_production/

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式