如何实例化数据库和我的存储库,应用架构指南

How to instantiate the database and my repositories, Guide to app architecture

我正在制作一个相当简单的应用程序,其中包含列出一些用户,如果提供了详细信息,则会打开另一个 activity,显示他们的出版物列表,其中包含来自知名人士的数据JsonPlaceHolder API.

关键是我正在制作具有尽可能最佳架构的应用程序,遵循文档和基本上下面的结构。

问题是应用感觉很慢,谁能帮我找出问题,谢谢

通过这种方式,我可以使用 Room 和我使用的存储库安装我的数据库

    class App: Application(){
    
        private val applicationScope = CoroutineScope(SupervisorJob())
    
        // Using by lazy so the database and the repository are only created when they're needed
        // rather than when the application starts
        private val database by lazy { UserRoomDatabase.getDatabase(this, applicationScope) }
        val userRepository by lazy { UserRepository(database.userDao()) }
        val postRepository by lazy { PostRepository(database.postDao()) }
    
    }

所以我在活动中初始化视图模型

    private val postViewModel: PostViewModel by viewModels {
            PostViewModelFactory((application as App).postRepository)
        }

我认为这是最重要的事情,也许这就是我做错的地方,这让我的应用程序有点慢。如果您需要其他东西,请问我。

我正在阅读文档,根据他们的说法,我可以使用 Dagger 来注入它,但事实上,我没有看到这个问题。

使用 siglent 模式使用 Daggar hilt 创建存储库对象,并确保 Batch drawable importer 中的应用程序资源(如果您使用大尺寸资源然后视图需要一些时间来呈现)。主要是应用程序因内存泄漏问题而崩溃。

整整两天没睡,但我很高兴的说,我终于可以做出一个架构完美的应用程序:D和理解一切,我觉得我在这方面迈出了一大步移动开发。我找到了使用匕首柄 () 的解决方案, 我会留下一个对我帮助很大的答案link。

在这里你可以找到依赖注入的基本信息,对于那些还不了解的人来说Dependency injection in Android

我的问题基本上是依赖关系之一,我用匕首柄解决了这个问题,除此之外,现在我做测试会容易得多。

也感谢@Muhammad Asad 的帮助。