【问题标题】:How to instantiate the database and my repositories, Guide to app architecture如何实例化数据库和我的存储库,应用架构指南
【发布时间】:2021-08-12 02:05:12
【问题描述】:

我正在制作一个相当简单的应用程序,其中包括列出一些用户,如果详细给出,另一个活动将打开,显示他们的出版物列表,其中包含来自著名的 JsonPlaceHolder API 的数据。

重点是我正在制作具有最佳架构的应用程序,遵循文档和下面的基本结构。

问题是app感觉很慢,也许有人帮我找出问题所在,谢谢

这样我就可以使用 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 来注入它,但事实是,据我所知,我没有看到问题。

【问题讨论】:

    标签: android mvvm architecture


    【解决方案1】:

    整整两天没睡但是很开心的说终于可以做出一个架构完美的app了:D,什么都懂,感觉在移动开发上迈出了一大步.我找到了使用匕首刀柄 (How to create and use a Room Database in Kotlin [Dagger-Hilt]) 的解决方案, 我会留下一个对我有很大帮助的答案的链接。

    这里你可以找到关于依赖注入的基本信息Dependency injection in Android那些还不知道的人@

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

    也感谢@Muhammad Asad 的帮助。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 匕首,如果我之前的意思是我写错了.mmmm 那么有必要查看文档并实现它。顺便说一句,渲染需要大量资源,我该如何解决?捆绑?还是作为?
      • 使用批量可绘制导入器插件这个插件维护你的资产,首先看到这个项目和教程基于 mvvm codingwithmitch.com/courses/rest-api-mvvm-retrofit2
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      • 1970-01-01
      • 2015-06-22
      • 1970-01-01
      • 2021-01-22
      相关资源
      最近更新 更多