Android:在启动画面期间在后台加载数据并在以后使用

时间:2013-04-22 19:47:23

标签: android

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

if (DEVELOPER_MODE) {
    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
        .detectDiskReads()
        .detectDiskWrites()
        .detectNetwork()
        .penaltyLog()
        .build());<br>
}

jsonArray = JsonParser.getJSONFromURL("cities2.php");



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

我的目标是在SplashScreen期间加载来自网络服务器的所有数据(大约4500行文本 - >大约50KB数据)并使用它们在不同的活动..

所以,我目前的主要问题是如何从我在SplashScreen中加载的网络服务器获取数据到“最后”活动(即SplashScreen - &gt; MainActivity - &gt; SetFilterActivity - &gt; ShowDataActivity(这里我需要数据) ))

我在这里读书; Android SplashScreen
在这里:How to make a splash screen (screen visible when app starts)?
在这里:http://www.androidpeople.com/android-loading-welcome-splash-spash-screen-example
在这里:http://www.41post.com/4588/programming/android-coding-a-loading-screen-part-1
和其他......: - )

我还尝试编写一个扩展Application的sperate类,并将数据“存储”在那里(getter和setter),但不知怎的,它不能像我想的那样工作。

任何人都可以指导我如何以正确的方式做正确的方向......

感谢您的帮助

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

3 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,因此我没有创建新的活动来显示启动画面,而是使用了Dialog,因此您无需在活动之间共享数据。 我以前使用的链接:http://blog.iangclifton.com/2011/01/01/android-splash-screens-done-right/

答案 1 :(得分:0)

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

请参阅:http://developer.android.com/guide/topics/ui/settings.html

// 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");

使用SharedPreferences会比扩展应用程序产生更少的开销 - 它将更快更容易维护,特别是对于50kb的数据,这是一个相当微不足道的数量。

答案 2 :(得分:0)

使用数据库保存并将数据放在那里。数据库根本不与活动绑定,因此一旦您将数据存储在那里,您可以在以后从任何地方检索它,基本上这就是数据库的用途 - 保存您的数据:)建议使用共享首选项并不是很好,因为它是基本上是关键值存储。如果您需要进行任何排序或条件数据提取,那么您将发现自己重新发明轮子。