2016-05-18 3 views
0

Я работаю над простым приложением списка дел, и я пытаюсь читать/записывать данные из внутреннего хранилища. Я пытаюсь понять, когда должны быть вызваны именно те методы чтения/записи.Android - Сохранение данных во внутреннюю память

Я знаю, что класс активности имеет метод onCreate(), который будет разумным местом для моего метода чтения, но где я должен называть мой метод записи?

Я хочу назвать это, когда приложение закрывает/концы, так что я бы предположить onDestory() хорошее место, но я слышал, что onDestroy() не может быть хорошим местом для операций хранения данных и я должен использовать onStop().

Любая помощь или идеи?

ответ

1

После таблицы в руководстве для разработчиков Android на Activity Lifecycle, ваше приложение может быть убит в системе в любое время без предупреждения после либо onPause() (для предварительного Honeycomb устройств) или после onStop(). Поэтому вы, вероятно, захотите написать свои данные в этих методах, чтобы убедиться, что ничего не потеряно. Поэтому для более новых устройств (уровень API 11 и выше) onStop() должен быть в порядке. Если ваше приложение должно работать и на более старых устройствах, то onPause() будет лучшим местом.

+0

Было бы лучше читать с хранения в onCreate() или onStart(), если я использую onStop() для записи данных? – baki1995

+0

Зависит. Если ваши данные могут быть изменены извне, вам может потребоваться поместить их в 'onStart()'. В противном случае 'onCreate()' должно быть хорошо. Если ваше приложение убито системой, 'onCreate()' будет вызываться, когда приложение будет вызвано снова. Если он не был убит системой, ваши ранее прочитанные данные все равно должны быть загружены, поэтому нет необходимости читать снова. (Если данные не будут изменены извне, в этом случае вам может потребоваться прочитать его чаще, чем в 'onStart()', например, при условии, что пользовательская кнопка или проверка изменений периодически.) – urps

1

Это зависит от жизненного цикла приложения.

This Picture

И увидеть This.

onStop() вызывает, когда пользователь нажимает кнопку дома (жесткий ключ).

И тогда, если память недостаточна или по другой причине, Android Memory Manager убьет ваше приложение мгновенно, а onDestory() никогда не позвонит.

Лучшее, что вам нужно сделать, это сделать кнопку, чтобы сохранить данные. Конечно, включите onStop() save рутину.

+0

Было бы лучше читать с хранения в onCreate() или onStart(), если я использую onStop() для записи данных? – baki1995

-1

Это всего лишь образец кода. Но ты получил идею. Создайте собственный метод, реализующий приведенный ниже код, и вызовите его для некоторых событий, таких как «onClick» или любой другой.

File file; 
    FileOutputStream strem = null; 
    String line = "Hey this is my name"; 
    try { 
     file = new File("sdcard/newFile.txt"); 
     strem = new FileOutputStream(file); 
     byte[] bytes = line.getBytes(); 
     strem.write(bytes); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      strem.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
Смежные вопросы