【问题标题】:Android Jetpack Compose: should we do away with the MainApplication file?Android Jetpack Compose:我们应该取消 MainApplication 文件吗?
【发布时间】:2021-09-01 05:29:27
【问题描述】:

我正在考虑将现有的基于视图的 Android 应用程序缓慢迁移到 Jetpack Compose 应用程序。我想我会借此机会彻底重构该应用程序,因此我从一张白纸开始 Compose 应用程序,并尝试采用最新的最佳实践。

我在 Android Studio 中创建了一个新项目,使用的是我阅读过的一些文档中推荐的“Empty Compose Activity”。

它创建的项目缺少MainApplication.kt文件,manifest直接跳转到MainActivity,里面只定义了class MainActivity : ComponentActivity()

我注意到 Android 文档说“There is normally no need to subclass Application. In most situations, static singletons can provide the same functionality in a more modular way.”,这让我想到,作为重构的一部分,我可能会尝试遵循这个隐含的建议,看看它会导致什么结果。

所以我的问题是,有什么必须在 Application 类中让我后悔 Android Studio 给我的结构吗?

Koin 依赖注入在主应用程序类之外工作正常吗?我的应用程序具有我现在在 Application 类中执行的 Room 依赖注入的服务。所有这些都可以在其他地方完成,大概在 MainActivity 中? (所有 Koin 的示例都使用 DI 的 Application 类!)

是否可以在应用程序类之外设置用户权限,如位置和文件访问权限??

我知道我在这里征求意见,但是如果您可以避免它,您是否将其视为最佳实践子类 Application,如 Android 文档似乎建议的那样?

最后,没有继承 Application 类(即没有 MainApplication.kt)以某种方式与构建应用程序的新 Compose 方式相关?

谢谢!

约翰

【问题讨论】:

  • 与标准的安卓应用没什么不同

标签: android kotlin android-jetpack-compose koin


【解决方案1】:

您从 Android Studio 创建 Compose 项目获得的框架代码不会继承 Application,因为它只是为您提供了拥有功能性 compose 应用程序的基本要素。

Application 类仍然是初始化依赖注入图以及其他需要一次性初始化的库的正确位置,例如 Timber

请求运行时权限应在您需要时在本地完成。如果您从一开始就需要一些权限来启动您的应用程序,请在您的活动中询问这些权限,Application 不适合这样做。

【讨论】:

  • 谢谢!这对我很有帮助。
猜你喜欢
  • 2019-10-25
  • 2020-12-29
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多