Предотвращение разрушения активности

Я отправляю на камеру намерение от действия, которое я называю так:

 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, и это заставило ОС уничтожить активность до результата.

Ответ 1

Убедитесь, что у вас нет настройки разработчика "Не сохраняйте действия", так как он уничтожит действие, которое вы покидаете.

Ответ 2

Вам не нужно беспокоиться о том, что вызов Activity будет уничтожен при вызове startActivityForResult(), так как он вообще не изменит ожидаемое поведение (то есть дочерняя активность не забудьте передать результат обратно родитель, уничтожен ли родитель или нет). См. сообщение.

Также обратите внимание, что, хотя иногда необходимо предотвратить уничтожение Activity (т.е. при изменениях конфигурации и т.д.), в общем случае вы хотите оставить только жизненный цикл Activity и позволить системе управлять фоном Activity для тебя. Когда вы запустите новый Activity, вы не должны явно запрещать уничтожение предыдущего Activity.

Ответ 3

Вы должны указать в своем манифесте как

 android:persistent="true"

Ниже SO сообщения отвечают на один и тот же вопрос

Как сделать остановку активности, а не уничтожаться, с помощью клавиши BACK?

Как предотвратить вызов onDestroy() после onPause()?

Предотвращение уничтожения активности как можно дольше