Ответ 1
Убедитесь, что у вас нет настройки разработчика "Не сохраняйте действия", так как он уничтожит действие, которое вы покидаете.
Я отправляю на камеру намерение от действия, которое я называю так:
Intent testphoto = new Intent(Dashboard.this,CameraHandler.class);
startActivity(testphoto);
В классе CameraHandler
я вызываю камеру:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
Но перед вызовом onActivityResult
в классе CameraHandler
действие уничтожается. Есть ли способ предотвратить это?
НАЙТИ ОТВЕТ:
У меня был noHistory="true"
в моем AndroidManifest
, и это заставило ОС уничтожить активность до результата.
Убедитесь, что у вас нет настройки разработчика "Не сохраняйте действия", так как он уничтожит действие, которое вы покидаете.
Вам не нужно беспокоиться о том, что вызов Activity
будет уничтожен при вызове startActivityForResult()
, так как он вообще не изменит ожидаемое поведение (то есть дочерняя активность не забудьте передать результат обратно родитель, уничтожен ли родитель или нет). См. сообщение.
Также обратите внимание, что, хотя иногда необходимо предотвратить уничтожение Activity
(т.е. при изменениях конфигурации и т.д.), в общем случае вы хотите оставить только жизненный цикл Activity
и позволить системе управлять фоном Activity
для тебя. Когда вы запустите новый Activity
, вы не должны явно запрещать уничтожение предыдущего Activity
.
Вы должны указать в своем манифесте как
android:persistent="true"
Ниже SO сообщения отвечают на один и тот же вопрос
Как сделать остановку активности, а не уничтожаться, с помощью клавиши BACK?