Android Lifecycle: заполните данные в активности в OnStart () или onResume ()?

StackOverflow https://stackoverflow.com/questions/4636797

Вопрос

Если вы получаете данные через курсор и заполните данные на экране, например, настроить заголовок окна, в onStart() или onResume()?

onStart() казалось бы логичным местом, потому что после onStart() деятельность уже может быть отображаемый, хотя и на заднем плане. Примечательно у меня проблемы с Управляемый диалог Это заставило меня переосмыслить это. Если пользователь поворачивает экран, пока диалоговое окно все еще открыто, onCreateDialog() а также onPrepareDialog() называются между onStart() а также onResume(). Отказ Если диалог должен основываться на данных, которые вам необходимо иметь данные до onResume().

Если я правильно onStart() Тогда почему Пример блокнота дать плохой пример, делая это в onResume()? Видеть http://developer.android.com/resources/sample/notepad/src/com/example/android/notepad/noteeditor.html. Noteepitor.java line 176 (title = mCursor.getString...).

Кроме того, что, если моя деятельность запускает еще одну активность / диалог, который меняет данные, отслеживает мой курсор. Даже в простейшем случае, это означает, что я должен вручную Обновить Мой предыдущий экран (слушатель для диалога в главной деятельности) или, альтернативно, чтобы я должен зарегистрировать ContentoBServer, поскольку я больше не обновляю данные в OnResume () (хотя я могу обновить его дважды, конечно)?

Я знаю, что это основной вопрос, но только диалог недавно, к моему удивлению, заставил меня осознать это.

Это было полезно?

Решение

Чтобы ответить на ваш вопрос о новедоре, просто посмотрите на строки над тем, как вы ситите, и вы увидите ...

    // Requery in case something changed while paused (such as the title)
    mCursor.requery();

Комментарий, кажется, объясняет все это. Несмотря на то, что я не прошел через пример блокнота, оказался, что автор (ы) строят в способности оправиться от изменений, в то время как новедочный приостановлен (а затем возобновлен).

Как объясняет GSREE (в то время как я набрал это), нет правильного или неправильного ответа, и он просто зависит от того, что нужно сделать, на какой точке жизненного цикла деятельности.

Другие советы

Снова решение зависит от того, что вам подходит.

Если вы хотите, чтобы курсор был предварительно заполнен один раз за приложение (и не беспокоит какие-либо изменения, то вы можете сделать это в OnCreate (). Этот метод будет отозван только в том случае, если приложение будет убит, и приложение погрузится.

Если вы хотите, чтобы Курсор был предшественним для получения приветствуется каждый раз, начнется видимое время жизни (большинство случаев, обслуживание / широковещание вызывает вашу активность, вы должны использовать OnStart ()

Если вы хотите, чтобы курсор был преподавлен для каждого сдержания переднего плана активности, вы должны использовать OnResume (). Так что, если у вас есть диалоговое окно или другое подбадность, модифицируя некоторую информацию, и, следовательно, вы хотите перезагрузить курсор, он лучше всего сделать в OnResume (). Недостатком для этого метода каждый раз, когда активность наступает на переднем плане, перезагружается курсор.

Надеюсь, это проясняет

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top