Активность уничтожена до onActivtyResult Android

#android

#Android

Вопрос:

Хорошо, я запускаю activityforresult, чтобы сделать снимок и сохранить его в хранилище, в файл, который я уже указал (его путь).

Я столкнулся с этой странной вещью, о которой я не знал —

Когда вы запускаете действие для результата в одной ориентации, а затем переключаете ориентацию при завершении другой активности, поскольку ориентация вашей активности изменилась, вызывается onDestroy, а затем onCreate, OnStart и после всего этого onActivityResult, что означает, что вы не можете что-то сделать, когда вернетесь к активности, если вам нужнонекоторые данные, которые вы бы сохранили в onSaveInstanceState.

Я прав и почему это так?

Порядок вызова функций в первом действии после завершения второго действия

  • Уничтожить
  • Создать
  • Начать
  • ActivityResult

Не разумнее ли быть

  • ActivityResult
  • Пауза
  • saveInstanceState
  • Остановка
  • Уничтожить
  • Создать

Итак, если нет смысла сохранять в onSaveInstanceState, должен ли я делать это в onPause? И каков наилучший способ сделать это?

Комментарии:

1. onSaveInstanceState() должна вызываться, как и должно onPause() быть, и onResume() раньше onDestroy() , в вашем первом наборе маркеров.

2. Хорошо, я согласен, но это то, что происходит после того, как вы закончите со вторым действием, и когда оно возвращается к первому, которое тем временем изменило ориентацию. Я отредактировал вопрос.

3. И именно поэтому использование фрагментов и сохранение состояния экземпляра так популярны.

4. @Zhuinden хорошо, как вы предполагаете, что это должно быть сделано? Я новичок в разработке Android, поэтому у меня еще нет всех концепций, но у меня сильное ощущение, что проблемы еще впереди, когда я начинаю общение с серверными и фоновыми потоками. : D Я также ориентируюсь на Android 2.2, и, если я правильно понял, фрагменты намного опережают (по времени). Стоит ли тратить время на фрагменты и поддержку, или есть способ нормально функционировать с Activities? Любое предложение было бы здорово.

5. «но это то, что происходит после завершения второго действия» — это потому, что они вызываются до того, как на экране появится действие камеры. Они определенно вызываются, и вы можете использовать их так же, как и в любом другом случае. «фрагменты намного опережают (по времени) для этого» — бэкпорт фрагментов находится в пакете поддержки Android и существует уже ~ 3 года.