#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 года.