Android Jetpack Compose:我们应该取消 MainApplication 文件吗?

Android Jetpack Compose: should we do away with the MainApplication file?

我正在考虑慢慢将现有的基于视图的 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.”,这让我想到,作为重构的一部分,我可能会尝试遵循这个隐含的建议,看看它会导致什么。

所以我的问题是,在应用程序 class 中是否有任何 必须 完成的事情会让我对 Android Studio 的结构感到遗憾给我?

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

可以在应用程序外部设置位置和文件访问等用户权限吗class??

我知道我在这里征求意见,但如果可以避免的话,您是否认为 not subclass 应用程序是最佳实践,因为Android 文档似乎暗示?

最后,不是子class应用程序class(即没有MainApplication.kt)是否与新的 Compose 有某种关联构建应用程序的方式?

谢谢!

约翰

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

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

请求运行时权限应该在您需要的时候在本地完成。如果您需要一些权限才能从一开始就启动您的应用程序,请在您的 activity 中请求那些权限,Application 不是合适的位置。