我正在学习我的Android开发技能,并且一直在使用Architecture Components。因此,我使用Room
批注创建了一个实体类以保持对数据库的持久性,并在实体类上实现了Parcelable
,部分目的是将实体对象放入Intent
对象中并将其在 Activity/fragment 之间传递。我只想知道这是否是一个好习惯。使用诸如数据库泄漏或安全漏洞之类的方法有任何弊端吗?只是好奇。
最佳答案
恕我直言,在现代Android应用程序开发中,不可以,原因如下:
Intent
extras传递对象,就在制作副本。如果您的应用程序的一部分随后希望修改该模型对象,那么该应用程序的其余部分如何保存数据的其他副本,那么将如何知道这些更改?理想情况下,您的存储库带有反应式API,该存储库是进行数据更改的一方。然后,它可以将数据更改通知其他有关方面,从而提供模型对象的最新表示。 Intent
与startActivity()
,startActivityForResult()
,setResult()
等一起使用时,该Intent
的内容都会传递给核心OS进程...即使正在启动的 Activity 与该进程处于同一进程中请求启动该 Activity 的代码。 Intent
的大小有内存限制(大约1MB或更低)。现在可以传递完整的模型对象,但是现在如果有人在模型中添加Bitmap
字段或其他内容,则可能会遇到麻烦。