1

目前,我将数据存储在Application班级的静态属性中。当应用程序关闭时,数据仍然存在,但是当应用程序从最近菜单中清除(或缓存的进程被终止)时,Application该类似乎也从内存中擦除。

我需要可以从活动/片段以及BroadcastReceiver. 启动时首先加载数据MainActivity你可以在我的 GitHub 项目中看到我的代码。

更新

我正在使用 SQLite 存储数据,并且活动在启动时将数据加载到内存中。不过,我认为我不能从BroadcastReceiver. 主要问题是我需要BroadcastReceiver能够操作与活动相同的数据。

4

2 回答 2

1

另一个有趣的可能性是将数据存储为 xml 文件。您可以使用它,例如简单的 XML 库:http ://simple.sourceforge.net/

首先,您应该在模型类中进行注释,

@Root
public class Example {

@Element
private String text;

@Attribute
private int index;

public Example() {
  super();
}  

public Example(String text, int index) {
  this.text = text;
  this.index = index;
}

public String getMessage() {
  return text;
}

public int getId() {
  return index;
}
}

然后你可以保存这些对象:

 Serializer serializer = new Persister();
 Example example = new Example("Example message", 123);
 File result = new File("example.xml");

 serializer.write(example, result);

要再次获取此文件,这应该可以完成工作:

Serializer serializer = new Persister();
File source = new File("example.xml");

Example example = serializer.read(Example.class, source);

这是取自项目站点的最简单示例之一,但可以编写嵌套对象和列表。它也有很好的记录

于 2013-03-28T17:51:28.347 回答
1

更简单的方法是使用 android首选项。其他方法包括将文件保存到磁盘或 SQLite 数据库中,您可以从阅读以下内容开始:将数据保存在 android 中

来自 android 教程的示例:

//Saving the data
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();

//Loading of the saved data
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);

您可以使用AsyncTask进行 SQLlite 操作。

于 2013-03-28T16:11:19.220 回答