Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使在1个活动中获取的相同数据(大数据)在应用程序的所有活动中都可用?_Android_Database_Sqlite - Fatal编程技术网

Android 如何使在1个活动中获取的相同数据(大数据)在应用程序的所有活动中都可用?

Android 如何使在1个活动中获取的相同数据(大数据)在应用程序的所有活动中都可用?,android,database,sqlite,Android,Database,Sqlite,看起来是个熟悉的问题。但我不能得到一个完美的解决方案,因此这个问题 在我的应用程序中,我获取30k字符串的数据并将其存储在字符串数组中。因为从web服务器获取这些数据需要很多时间,所以我在后台执行此操作,并在UI线程中显示一个启动屏幕,直到那时 所以这个字符串数组是在SplashActivity中创建和填充的,并使公开静态。我在下一个名为ListViewActivity的活动中使用它,如下所示: SplashActivity.myArrayOfStrings; 这里的问题是,当我在ListVi

看起来是个熟悉的问题。但我不能得到一个完美的解决方案,因此这个问题

在我的应用程序中,我获取30k字符串的数据并将其存储在字符串数组中。因为从web服务器获取这些数据需要很多时间,所以我在后台执行此操作,并在UI线程中显示一个启动屏幕,直到那时

所以这个字符串数组是在
SplashActivity
中创建和填充的,并使
公开
静态
。我在下一个名为ListViewActivity的活动中使用它,如下所示:

SplashActivity.myArrayOfStrings;
这里的问题是,当我在
ListViewActivity
中时,
我按下Home按钮
,让它停留3-5分钟,然后尝试重新打开应用程序,它会显示
ArrayIndexOutOfBoundsException
,因为SplashActivity中的数组项已被销毁,我正试图访问ListViewActivity中的值

因此,我想知道如何存储这些数据,以便在所有活动中使用这些数据,只需一次抓取

我不想要像共享首选项这样的东西,因为每天都会有30000个字符串发生变化

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

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


谢谢

存储这么多数据必须在SQLite数据库中完成。您不应该依赖于活动类中的任何数据存储是永久性的,因为系统会随意回收这些活动(如果内存较低,则有更高的概率回收…)


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

而且每次用户启动应用程序时,都有可能添加新字符串,因此我只需要更新(添加新创建的字符串)对于该数据库??您可以添加/删除/更新SQLite中的任何行,当然,就像在任何数据库中一样。如果可能,您只需从网络加载新的(或更新的)行,而不必加载全部内容。这可以缩短您的加载时间!