3

我试图在我的应用程序启动期间从网络服务器加载数据(返回 JSONArray)。到目前为止,我只能使用以下命令从主要活动中取回数组:

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

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



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

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

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

我在这里读书;Android SplashScreen
Here:如何制作启动画面(应用启动时屏幕可见)?
这里:http
: //www.androidpeople.com/android-loading-welcome-splash-spash-screen-example 这里:http ://www.41post.com/4588/programming/android-coding-a-loading- screen-part-1
和其他...... :-)

我还尝试编写一个扩展应用程序的独立类并在其中“存储”数据(getter 和 setter),但不知何故它不像我想要的那样工作。

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

谢谢您的帮助

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

4

3 回答 3

3

我遇到了同样的问题,所以我没有创建一个新的活动来显示启动屏幕,而是使用了一个对话框,所以你不需要在活动之间共享数据。我曾经这样做的链接:http: //blog.iangclifton.com/2011/01/01/android-splash-screens-done-right/

于 2013-04-22T20:13:17.913 回答
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 的数据,这是一个相当微不足道的数量。

于 2013-04-22T20:11:47.283 回答
0

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

于 2013-04-22T20:48:31.203 回答