首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在房间数据库实体上实现Parcelable是一个很好的实践吗?

在房间数据库实体上实现Parcelable是一个很好的实践吗?
EN

Stack Overflow用户
提问于 2019-05-09 11:38:17
回答 1查看 5.4K关注 0票数 12

我正在学习我的Android技能,并且一直在玩架构组件。因此,我使用Room注释创建了一个实体类,用于持久化到数据库,并在实体类上实现了Parcelable,部分原因是将实体对象放入Intent对象并在活动/片段之间传递它。我只想知道这是否是个好办法。使用诸如数据库泄漏或安全漏洞之类的方法有什么缺点吗?只是好奇而已。

EN

回答 1

Stack Overflow用户

发布于 2019-05-09 11:49:16

我只想知道这是否是个好办法。

IMHO,在现代Android应用程序开发中,由于几个原因,包括:

  • 存储库模式:Android体系结构的当前模式是将数据存储和将关注点转移到一个“存储库”对象中。存储库知道数据来自和去往何处的详细信息(房间、领域、重装等)。应用程序的其余部分既不知道也不关心,因为应用程序的其余部分只是与存储库交谈。使用此模式,您将在活动和片段之间传递标识符,存储库将根据这些标识符传递模型对象。
  • 隐藏实现细节:您的UI应该使用一组理想的模型类,这些类与数据存储或传输的特定实现无关。这样,如果您选择改变您的实现(例如,从一个空间到一个领域),您的更改仍然是孤立的,并且对UI没有什么影响。如果使用存储库,则存储库将负责将Room实体和Retrofit响应转换为标准化的模型对象,其余的应用程序都知道如何使用这些对象。
  • 单一的真实来源:一旦您开始通过Intent附加程序传递对象,您就在复制。如果你的应用程序的某一部分想修改模型对象.该应用程序的其余部分,保存了其他数据副本,如何知道这些变化呢?理想情况下,您有一个带有反应性API的存储库,其中存储库是进行数据更改的一方。然后,它可以将数据更改通知其他感兴趣的方面,提供模型对象的最新呈现。
  • IPC内存限制:每次您使用带有startActivity()startActivityForResult()setResult()等的Intent时,该Intent的内容将传递给核心OS进程.即使正在启动的活动与请求启动该活动的代码处于相同的进程中。对于Intent的大小有内存限制(粗略地说,1MB或更低)。现在传递完整的模型对象可能会很好,但稍后如果有人向模型中添加了Bitmap字段或其他东西,您可能会遇到麻烦。
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56058576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档