2014-01-05 1 views
0

Я новичок в android. Мне нужна помощь для работы с моим приложением. В основном я пытаюсь разработать приложение для викторины. У меня есть вопросы, хранящиеся в файле. Поэтому мое приложение читает каждый вопрос из файла и отображает его на экране с помощью объектов InputStream и BufferedReader.Android мы можем сохранить объект BufferedReader в onpause

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

Так что теперь, когда пользователь завершает работу приложения в середине, я хочу, чтобы мое приложение, чтобы сохранить это и значение BR (указывая на вопрос, где приложение слева) и восстановить их снова во время следующего запуска приложения. После некоторого просмотра я узнал, что если мы хотим сохранить состояние приложения между разными записями, onPause() является одним из таких задач. Но можем ли мы сохранить эти и br объекты? Как сохранить их в onPause(). Может ли кто-нибудь помочь мне с фрагментом кода для сохранения этих объектов?

Большое спасибо заранее ...

+0

простыми словами «НЕТ» –

ответ

0

Я думаю, вы должны написать код, который сохраняет данные в файл, а также при загрузке разбирает данные из сохраненного файла и создает объект.

OnPause не полезно, потому что здесь, как вы сказали, речь идет о приложении выхода, так что вся память (и ваши объекты) теряются ..

редактировать:

, если вы уверены, что ваше приложение продолжает работать в фоновом режиме, попытайтесь сохранить объекты за пределами деятельности:

Очень грубый пример:

void onPause(...) { 
    SomeSingleton.getInstance().setObjects(is, br); 
} 

void onCreate(...) { 
    is = SomeSingleton.getInstance().getIs(); 
    br = SomeSingleton.getInstance().getBr(); 
} 
+0

K..but Я читал, что OnPause() для этого очень purpose..persisting состояние б/ш работает приложение .. – user2784307

+0

Если вы уверены, что ваше приложение продолжит работу, вы можете использовать, например, следующее решение: сделать некоторый класс Singleton и сохранить ваши объекты там –

+0

Во-первых, спасибо. Я имею в виду, что «приложение b/w different run» означает, когда приложение закрыто и открыто на одном и том же point later..so я не думаю, что синглтон будет полезен здесь. Будет ли он еще полезен? .. – user2784307

0

Нет. То, что вы должны сделать, это сохранить что-то простое, как т (номер вопроса) и список ответов, которые могут сохраняться в пакете в onSaveInstanceState. Затем вы можете получить эти сохраненные значения из Bundle в onCreate.

например.

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); 
} 
+0

Так что Я сохраняю qno и когда ap p запускается в следующий раз, я должен разбирать файл до тех пор, пока не будет выполнено конкретное qno? .. нет другого пути? ... – user2784307

+0

Да. Возможно, стоит изменить, как вы храните свои вопросы, например. отдельных файлов или SQLiteDatabase, чтобы вы могли получать один вопрос одновременно. Но если файл не такой большой, просто загрузите его все сразу. –

+0

спасибо за takin ур время, помогая мне .. "погрузка всех из них сразу" вы имеете в виду, я должен добавить все quesions из файла в какой-то список..и затем загрузить вопросы из списка? – user2784307

 Смежные вопросы

  • Нет связанных вопросов^_^