0

似乎是一个熟悉的问题。但我无法得到完美的解决方案,因此提出了这个问题。

在我的应用程序中,我正在获取 30k 字符串的数据并将其存储在字符串数组中。由于从 Web 服务器获取这些数据需要花费大量时间,因此我在后台执行此操作并在 UI 线程中显示启动画面。

因此,这个字符串数组被创建并填充SplashActivity并制作Public Static。我在下一个名为 ListViewActivity 的活动中使用它,就像这样:

SplashActivity.myArrayOfStrings;

这里的问题是当我在ListViewActivity和时i press Home button,将其放置 3-5 分钟并尝试重新打开应用程序,它说ArrayIndexOutOfBoundsException是因为 SplashActivity 中的 Array 项已被破坏,我试图在 ListViewActivity 中访问它的值。

所以我知道如何存储这些数据以在所有活动中使用它,只需 1 次获取。

我不想要共享首选项之类的东西,因为每天都会有 30k 个字符串发生变化。

我从未在我的应用程序中使用过 SQLite,但如果我在 SpalshActivity 中时将字符串存储在数据库中,我可以在所有其他活动中使用数据吗?我的意思是即使我的应用程序进入后台并在 5 分钟后重新打开,这些数据也会存在吗?

还是有更好更明显的解决方案?

谢谢你

4

1 回答 1

1

存储这么多数据必须在 SQLite DB 中完成。您不应该依赖活动类中的任何数据存储是永久性的,因为系统将随意回收活动(如果内存不足,则更有可能......)

相反,存储在 SQLite 中的数据应该是永久的,即使您关闭了您的活动、您的应用程序,或者即使您关闭了您的手机。

于 2012-08-30T07:40:50.637 回答