【问题标题】:Android Lifetime dataAndroid 生命周期数据
【发布时间】:2016-08-19 10:05:44
【问题描述】:

我正在开发一个 android 应用程序,它在启动时从我的 API 获取一些数据,并且它必须在整个生命周期中保留这些数据。这些数据可以从应用程序中的任何组件访问,所以我总是通过在我的 Application 类上初始化一个单例来解决这个问题。 但是,单例很难测试,所以我正在考虑另一种方法。数据不应存储在共享首选项中,因为每次打开应用程序时都会获取它们,那么您会怎么做?单例是这里的最佳选择吗?

提前致谢

【问题讨论】:

    标签: android singleton android-applicationinfo


    【解决方案1】:

    是什么样的数据?

    如果它符合您的需要,并且您正在存储某种记录,首选方式是使用SQLiteDatabase 以便于查询和写入。

    如果只是某种偏好,我自己会使用SharedPreferences,但如果它不在表格中,您可以简单地将数据写入一个文件,您可以使用Environment.getExternalStorageDirectory( ) 假设有一个可用,如果没有,您可以使用Context.getFilesDir()

    例如以下列方式..

    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。

    【讨论】:

    • 感谢您的回答。数据是一些基本模型,例如流派数组、当前用户等。我在考虑不要使用 SharedPreference,因为如果我使用共享首选项,那么当应用程序重新启动时,数据仍然存在,而我的数据每次应用启动时都需要重新创建。但是,我仍然可以使用 sharedpreferences 并在应用程序启动时重新创建它们,或者我可以使用单例,我怀疑哪个选项是最好的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2013-04-06
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    相关资源
    最近更新 更多