在Android中定期存储数据

时间:2014-11-18 22:20:48

标签: android sqlite file sharedpreferences

我需要记录我的布尔变量的变化,这取决于我的代码中的某些条件。我有一个每秒运行一次的timertask来跟踪任何这样的变化。当发生变化时,即当变量变为“真实”时。为了' false',我需要节省发生此事件的时间。所有这些事件都需要能够在以后从另一个Activity中检索。我可以使用SharedPreferences实现此任务:我正在考虑使用putstring方法:

sp_editor.putString("alarm_activated",String.valueOf(System.currentTimeMillis()));  

但我意识到每次都会覆盖alarm_activated。但我需要所有的时间'值。 我也可以通过添加' time'来每次更改密钥(密钥,值)。关键本身如下。

sp_editor.putStrng("alarm_activated"+String.valueOf(System.currentTimeMillis(),placeholder);

这看起来是一种非常低效的方法。

我还有其他办法吗?

3 个答案:

答案 0 :(得分:1)

正确的方法是设置和更新您的应用可以使用的SQLite数据库。它可以在本地保存和检索数据方面为您提供最大的灵活性,而不必担心如果应用程序被杀,则会丢失数据。这是一个很好的tutorial

答案 1 :(得分:-1)

创建一个单例类并在里面创建ListArray,您可以在其中保存数据。

如果需要从其他应用程序访问数据,请使用Android SQLite。

答案 2 :(得分:-1)

你可以创建一个这样的类。

public class TimeKeeper {
private static TimeKeeper instance;

public List<String> timeList = new ArrayList<String>();

public static TimeKeeper getTimeKeeper() {

    if (instance == null) {
        instance = new TimeKeeper();
    }
    return instance;
}

}

从TimerTask中,您可以将时间添加到列表中

TimeKeeper.getTimeKeeper().timeList.add("Your Time");

并且您可以从任何其他活动轻松访问此列表。

如果它适合你,请标记为。

// =======为了永久保存它,你可以遍历它并将其保存到db。

for(Strng time :TimeKeeper.getTimeKeeper().timeList)
 {
   db.insertTime(time); //call Your method to insert time string into your db
 }