Вариант 1:
Я наблюдал эту проблему, когда вы пытаетесь начать действие со значениями в намерении.
Ниже приведен пример, когда Activity_A вызывает Activity_Bи передает значения в намерении для сбора в Activity_B:
Intent intent = new Intent(this, activityB.class);
intent.putExtra("val1", someValue1);
intent.putExtra("val2", someValue2);
intent.putExtra("val3", someValue3);
this.StartActivity(intent);
finish();
Файл манифеста:
В этом случае вы можете установитьandroid:launchMode="singleInstance"
или android:launchModel="singleTop"
в вашем AndroidManifest.xml
и Activity_B будут запускаться только один раз. Надеюсь, это поможет.
Вариант 2:
Я думаю, Натаниэль дает вам хороший совет, чтобы перенести запуск камеры в onResume.
Однако,вам нужно будет различать onResume, который является вашей активностью, начинающейся в первый раз, и тот, который происходит из-за того, что ваша деятельность возобновляется после завершения действия камеры. Если вы этого не сделаете, вы получите цикл, который видите.
Чтобы сделать это, вы можете изменить onActivityResult () , чтобы установить переменную-член в вашей деятельности, которая называется что-то вроде isResumingFromCaptureIntent. Установите значение true в onActivityResult, когда resultCode соответствует тому, что вы использовали для запуска камеры. Затем, в вашем onResume, проверьте isResumingFromCaptureIntent, если true, то вы знаете, что вам не нужно запускать намерение камеры и можете установить значение обратно на false и продолжить все остальное, что нужно делать вашей деятельности.