我是android新手。我需要一些帮助来处理我的应用程序。基本上我正在尝试开发一个测验应用程序。我有问题存储在文件中。所以我的应用程序从文件中读取每个问题,并使用InputStream和BufferedReader对象在屏幕上显示它。
is = this.getResources().openRawResource(R.raw.sampletest);
br = new BufferedReader(new InputStreamReader(is));
所以现在当用户退出中间的应用程序时,我希望我的应用程序保存is和br值(指向应用程序离开的问题)并在下一个应用程序运行期间再次恢复它们。在做了一些浏览之后,我了解到如果我们希望在不同的运行之间保持app状态,onPause()就是这样的任务。但是我们可以保存这些和br对象吗?如何在onPause()中保存它们。有人可以通过保存这些对象的代码片段来帮助我吗?
提前非常感谢你......
答案 0 :(得分:0)
我想你应该编写一个将数据保存到文件中的代码,并在加载时解析保存文件中的数据并创建对象。
onPause在这里没有用,因为就像你说的那样是关于app退出,所以所有的内存(和你的对象)都会丢失..
编辑:
如果您确定您的应用继续在后台运行,请尝试将对象保存在活动之外:
非常粗略的例子:
void onPause(...) {
SomeSingleton.getInstance().setObjects(is, br);
}
void onCreate(...) {
is = SomeSingleton.getInstance().getIs();
br = SomeSingleton.getInstance().getBr();
}
答案 1 :(得分:0)
没有。你应该做的是保存一些简单的东西,比如位置(问题编号)和可以在onSaveInstanceState
中捆绑的答案列表。然后,您可以在onCreate
中的Bundle中获取这些保存的值。
e.g。
private int position;
private ArrayList<String> answers;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
position = savedInstanceState.getInt("position");
answers = savedInstanceState.getStringArrayList("answers");
} else {
answers = new ArrayList<String>();
}
// This should load up the right question.
displayQuestion(position);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("position", position);
outState.putStringArrayList("answers", answers);
}