目前,我将数据存储在Application
类的静态属性中。当应用程序关闭时,数据仍然存在,但是当应用程序随后从最近的菜单中清除时(或者缓存的进程被终止),Application
类似乎也会从内存中擦除。
我需要从活动/片段以及BroadcastReceiver
轻松访问数据。启动MainActivity
时首先加载数据。您可以在my GitHub project看到我的代码。
更新
我使用SQLite存储数据,活动在启动时将数据加载到内存中。我不认为我可以从BroadcastReceiver
执行此操作,因为它们的使用寿命有限且SQLite可能会长期运行。主要问题是我需要BroadcastReceiver
能够操作与活动相同的数据。
答案 0 :(得分:1)
更简单的方法是使用android preferences。其他方法包括保存到文件到磁盘或SQLite数据库,您可以从阅读:saving data in 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操作。
答案 1 :(得分: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);
这是从项目站点获取的最简单的示例之一,但是可以编写嵌套对象和列表。 它也有很好的记录