将大型JSON加载到List<>中的最佳方式

时间:2018-05-09 11:11:26

标签: android

我正在开发Android多人游戏。我的JSON文件包含800 000多个字典单词。一旦玩家进入GameActivity实际玩游戏,JSON数组就会被加载到List中。因此,每次玩家开始1vs1游戏时,JSON都会被加载到List<&gt ;.

现在,我有两个选择:

  1. 以最佳方式加载JSON,以便用户在一段时间后不会出现内存错误

  2. 将JSON文件加载到List<>只有一次,申请开放时。

  3. 我不确定这2个案例中的任何一个,有人可以帮我解释一下如何做到这一点吗?谢谢

1 个答案:

答案 0 :(得分:0)

由于我的回复,我无法发表评论。 但你可以尝试几种不同的方法解决这个问题。

如果您的JSON很少变化,我可以建议this method

您可以将json放入资产文件中。并使用此

在运行时调用
brew uninstall --force r

或者您可以在应用启动之前获取您的Json并存储在ContentProvider(DB或SharedPreference)中。这样你只需要在必要时获取你的json。

public String loadJSONFromAsset() {
    String json = null;
    try {
        InputStream is = getActivity().getAssets().open("yourfilename.json");
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        json = new String(buffer, "UTF-8");
    } catch (IOException ex) {
        ex.printStackTrace();
        return null;
    }
    return json;
}