Android 如何使在1个活动中获取的相同数据(大数据)在应用程序的所有活动中都可用?
看起来是个熟悉的问题。但我不能得到一个完美的解决方案,因此这个问题 在我的应用程序中,我获取30k字符串的数据并将其存储在字符串数组中。因为从web服务器获取这些数据需要很多时间,所以我在后台执行此操作,并在UI线程中显示一个启动屏幕,直到那时 所以这个字符串数组是在Android 如何使在1个活动中获取的相同数据(大数据)在应用程序的所有活动中都可用?,android,database,sqlite,Android,Database,Sqlite,看起来是个熟悉的问题。但我不能得到一个完美的解决方案,因此这个问题 在我的应用程序中,我获取30k字符串的数据并将其存储在字符串数组中。因为从web服务器获取这些数据需要很多时间,所以我在后台执行此操作,并在UI线程中显示一个启动屏幕,直到那时 所以这个字符串数组是在SplashActivity中创建和填充的,并使公开静态。我在下一个名为ListViewActivity的活动中使用它,如下所示: SplashActivity.myArrayOfStrings; 这里的问题是,当我在ListVi
SplashActivity
中创建和填充的,并使公开
静态
。我在下一个名为ListViewActivity的活动中使用它,如下所示:
SplashActivity.myArrayOfStrings;
这里的问题是,当我在ListViewActivity
中时,我按下Home按钮
,让它停留3-5分钟,然后尝试重新打开应用程序,它会显示ArrayIndexOutOfBoundsException
,因为SplashActivity中的数组项已被销毁,我正试图访问ListViewActivity中的值
因此,我想知道如何存储这些数据,以便在所有活动中使用这些数据,只需一次抓取
我不想要像共享首选项这样的东西,因为每天都会有30000个字符串发生变化
我从未在我的应用程序中使用过SQLite,但如果我在SpalShacity时将字符串存储在数据库中,那么我可以在其他所有活动中使用这些数据吗?我的意思是,即使我的应用程序进入后台并在5分钟后重新打开,这些数据还会存在吗
还是有更好、更明显的解决方案
谢谢存储这么多数据必须在SQLite数据库中完成。您不应该依赖于活动类中的任何数据存储是永久性的,因为系统会随意回收这些活动(如果内存较低,则有更高的概率回收…)
相反,SQLite中存储的数据应该是永久性的,即使您关闭活动、应用程序,或者关闭手机。而且每次用户启动应用程序时,都有可能添加新字符串,因此我只需要更新(添加新创建的字符串)对于该数据库??您可以添加/删除/更新SQLite中的任何行,当然,就像在任何数据库中一样。如果可能,您只需从网络加载新的(或更新的)行,而不必加载全部内容。这可以缩短您的加载时间!