Android:在启动屏幕时在后台加载数据,以后再使用

Android:在启动屏幕时在后台加载数据,以后再使用,android,Android,我试图在应用程序启动期间从Web服务器加载数据(获取JSONArray)。 到目前为止,我只能通过以下命令从主活动获取阵列: if(开发者模式){ StrictMode.setThreadPolicy(新的StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .build()); } jsonArray=JsonParser.getJSONF

我试图在应用程序启动期间从Web服务器加载数据(获取JSONArray)。 到目前为止,我只能通过以下命令从主活动获取阵列:

if(开发者模式){
StrictMode.setThreadPolicy(新的StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
} jsonArray=JsonParser.getJSONFromURL(“cities2.php”);


这给了我当前课程中所有的城市(或我需要的任何数据),但这不是一个干净的方法
我现在的问题是,如何将城市从我的SplashScreen活动转到我需要数据的活动。

我的目标是在SplashScreen期间从Web服务器加载所有数据(大约4500行文本->大约50KB数据),并在不同的活动中使用它们。。

因此,我目前的主要问题是如何从我在SplashScreen期间加载到“last”活动(即SplashScreen->MainActivity->SetFilterActivity->ShowDataActivity)的Web服务器获取数据(这里我需要数据))

我在这里读书
此处:
此处:
还有这里:
和其他…-)

我还试图编写一个sperate类来扩展应用程序并“存储”其中的数据(getter和setter),但不知何故,它并不能像我所希望的那样工作

有谁能指导我正确的方向,告诉我怎样才能以正确的方式做到这一点

谢谢你的帮助


PS:我可以在需要时轻松地在每个屏幕上加载数据,但我想在某一点加载数据,然后在需要时在程序中使用它

将累积的数据作为共享首选项加载。然后,您可以从应用程序中的任何位置以键入的键/值对的形式访问它们

见:


使用SharedReferences比扩展应用程序的开销小得多——它将更快、更易于维护,特别是对于50kb的数据,这是一个相当小的量。

我也遇到了同样的问题,所以我没有创建新的活动来显示初始屏幕,而是使用了一个对话框,因此,您不需要在活动之间共享数据。
我使用的链接是:

使用数据库来保存和放置数据。数据库和活动根本没有联系,所以一旦你们将数据存储在那个里,你们以后就可以从任何地方检索到它,基本上这就是数据库的作用——保存你们的数据:)使用共享首选项的建议并不是很好,因为它基本上是键值存储。如果您需要执行任何排序或条件数据提取,那么您将发现自己正在重新设计轮子。

另一个选项是使用两个不同的视图。在onCreate中加载一个视图,完成后再加载另一个视图。但这是绝对正确的-用于覆盖数据加载的启动屏幕不应该是它自己的活动。嗨@Alan,谢谢你的链接。。我想我会用这个描述来解决这个问题。谢谢你,艾伦,这是合乎逻辑的。一个数据库似乎只需要50kb的数据就可以完成很多工作。。我不想永久存储数据。。有些数据将每隔几天更改一次,因此每次应用程序启动时都需要从Web服务器加载这些数据。。不过,谢谢你的帮助!不,这不是很多工作。这很容易,你不喜欢这个想法的唯一原因是你不熟悉它。但这很简单。准备好任何db教程,然后以正确的方式运行应用程序谢谢MarsAtomic,我将使用共享首选项解决我正在处理的另一个问题:-)。现在我将使用@Alan的解决方案。谢谢你的帮助。
if (DEVELOPER_MODE) {
    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
        .detectDiskReads()
        .detectDiskWrites()
        .detectNetwork()
        .penaltyLog()
        .build());<br>
}

jsonArray = JsonParser.getJSONFromURL("cities2.php");
// Writing prefs

SharedPreferences.Editor editor = preferences.edit();

editor.putInt(defaultInt, currentInt);
editor.putFloat(defaultFloat, currentFloat);
editor.putString(defaultString, currentString);

// Reading prefs

currentString = this.getResources().getString("my_string_value");
currentFloat = this.getResources().getFloat("my_float_value");