Android可以在暂停中保存BufferedReader对象

时间:2014-01-05 16:30:42

标签: android onpause

我是android新手。我需要一些帮助来处理我的应用程序。基本上我正在尝试开发一个测验应用程序。我有问题存储在文件中。所以我的应用程序从文件中读取每个问题,并使用InputStream和BufferedReader对象在屏幕上显示它。

is = this.getResources().openRawResource(R.raw.sampletest);
br = new BufferedReader(new InputStreamReader(is)); 

所以现在当用户退出中间的应用程序时,我希望我的应用程序保存is和br值(指向应用程序离开的问题)并在下一个应用程序运行期间再次恢复它们。在做了一些浏览之后,我了解到如果我们希望在不同的运行之间保持app状态,onPause()就是这样的任务。但是我们可以保存这些和br对象吗?如何在onPause()中保存它们。有人可以通过保存这些对象的代码片段来帮助我吗?

提前非常感谢你......

2 个答案:

答案 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);
}