Android中的共享首选项和内部存储有什么区别?数据存储在哪里?看起来Android系统为每个应用程序分配特定的空间量。使用共享首选项时,我的应用程序内存不足并抛出OutOfMemory异常。如果我使用内部存储将此数据保存到文件中,这会解决问题吗?如果内部存储也为应用程序使用相同的有限分配空间,那么如何解决此问题?
SharedPreferences将数据存储在键值对中。它主要将它们存储在RAM中,但它也将副本保存到内部存储器中。 Android提供用于存储代码,所有图形和任何临时数据的RAM,并且它是有限的。如果你存储了很多键值对(也许值很长String
s),你可能确实使用你的应用程序的所有RAM,最终得到OutOfMemoryException
。这表明SharedPreference可能不是您尝试存储的数据的正确方法。
相反,内部存储完全基于闪存。应用程序的约束较少,并且可以存储大量数据,如图像。内部存储有点像目录,所以你创建文件,读/写它们,删除它们等等,所以它与键值对不同。
使用共享首选项,您无需处理文件IO。对于内部存储,您需要处理文件IO。
如果您有大量数据,则应使用内部存储。您还需要避免存储不必要的数据。
欲了解更多信息,请阅读https://developer.android.com/guide/topics/data/data-storage.html
Android中的共享首选项和内部存储有什么区别?
Internal storage指的是机载闪存上的一个位置,该位置是您应用程序专用的,用户无法看到。
SharedPreferences
是一种在内部存储上存储数据的方法。
看起来Android系统为每个应用程序分配特定的空间量。
不,虽然他们将来可能会这样做。
使用共享首选项时,我的应用程序内存不足并抛出OutOfMemory异常
OutOfMemoryError
指的是堆空间(RAM),而不是存储空间。
如果我使用内部存储将此数据保存到文件中,这会解决问题吗?
可能,虽然这很大程度上取决于你在做什么。