Android активность OnCreate вызывается дважды - PullRequest
0 голосов
/ 03 ноября 2019

Я начинаю свое второе занятие следующим образом:

Intent intentNotAuthorized = new Intent(SplashScreen.this, NotAthorized.class);
            intentNotAuthorized.putExtra("message","dummy");
            intentNotAuthorized.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intentNotAuthorized);
            finish();

Когда возвращаюсь к первому занятию, используя:

      Intent intentSplash = new Intent(NotAthorized.this, SplashScreen.class);
        intentSplash.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intentSplash);
        finish();

при создании первого занятия, Oncreate назывался twise

Ответы [ 2 ]

0 голосов
/ 13 ноября 2019

Вариант 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 и продолжить все остальное, что нужно делать вашей деятельности.

0 голосов
/ 03 ноября 2019

Дело в том, что вы не должны создавать намерение, когда хотите вернуть к первому занятию.

правильный путь - просто позвонить *Метод 1008 * finish () во втором упражнении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...