我正在开发一个 android 应用程序,它在启动时从我的 API 获取一些数据,并且它必须在整个生命周期中保留这些数据。这些数据可以从应用程序中的任何组件访问,所以我总是通过在我的 Application 类上初始化一个单例来解决这个问题。但是,单例很难测试,所以我正在考虑另一种方法。数据不应该存储在共享首选项中,因为每次应用程序打开时都会获取它们,所以你会怎么做?单身人士是这里的最佳选择吗?
提前致谢
我正在开发一个 android 应用程序,它在启动时从我的 API 获取一些数据,并且它必须在整个生命周期中保留这些数据。这些数据可以从应用程序中的任何组件访问,所以我总是通过在我的 Application 类上初始化一个单例来解决这个问题。但是,单例很难测试,所以我正在考虑另一种方法。数据不应该存储在共享首选项中,因为每次应用程序打开时都会获取它们,所以你会怎么做?单身人士是这里的最佳选择吗?
提前致谢
它是什么样的数据?
如果它符合您的需求,并且您正在存储某种记录,则首选方法是使用SQLiteDatabase以便于查询和写入。
如果它只是某种首选项,我会自己使用SharedPreferences,但如果它不在表中,您可以简单地将数据写入一个文件,您可以使用Environment解析该路径。getExternalStorageDirectory () 假设有一个可用,如果没有,你可以回退到Context。获取文件目录()
以以下方式为例..
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(mContext.getFilesDir(), "prefs.dat")));
bw.write(data);
bw.close();
并以类似的方式读回
BufferedReader br = new BufferedReader(new FileReader(new File(mContext.getFilesDir(), "prefs.dat")));
data = br.readLine();
br.close();
在此过程中,您可以将数据序列化为比纯文本更好的格式,例如 JSON。