Предотвращение "недавних" от загрузки вторичной активности - PullRequest
0 голосов
/ 10 ноября 2019

Мое приложение имеет два вида деятельности. Давайте просто назовем их «A» и «B» (B - очень тяжелая игра). Он должен работать так, как если бы «A» запускал, проверял пакет OBB, монтировал его, а затем запускал «B» и передавал некоторые данные в «B», а затем «A» вызывал финиш самостоятельно, так как это было сделано.

Важно, что «A» - это единственное, что может запустить / создать «B».

То, что происходит, это то, что, когда «B» завершается ОС из-за нехватки памяти, а затем через некоторое времяпользовательская задача переключается обратно на нее через «recents», Android пытается создать новое действие «B».

В этой ситуации я хочу, чтобы оно запустило новое действие «A», которое затем создаст «B». Может кто-нибудь сказать мне, что я должен изучить, чтобы сделать это?

Важно, чтобы пользователь мог переключаться между приложениями, принимать телефонные звонки и т. Д. И возвращаться к уже созданному / запущенному действию "B", еслиэто все еще там и не было прекращено. Если оно было прервано, то при нажатии на него нужно запустить операцию «А», чтобы можно было проверить и перемонтировать OBB и т. Д.

ПРИМЕЧАНИЕ. Мне пришлось упростить и замаскировать некоторые сложные вещи, чтобы сделатьвопрос короткий, но давайте предположим, что подготовка, которую выполняет «А», не может быть перенесена в «В». Я знаю, это похоже на нормальную работу на этом упрощенном уровне ... но, к сожалению, это не так.

1 Ответ

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

Передача некоторых данных в Intent при открытии Activity B из A, затем каждый раз при создании Activity B проверяется, есть ли эти данные, в противном случае создайте Intent для Activity A и завершите Activity B.

Activity A:

Intent i = new Intent(activity, ActivityB.class);

// Pass your data or otherwise a boolean like so
i.putExtra("validIntent", true);
startActivity(i);
finish();

Упражнение B:

Bundle loginBundle = getIntent().getExtras();
boolean continueActivity = false;

if (loginBundle =! null) {
    if (loginBundle.getBoolean("validIntent");) {
        continueActivity = true; 
    }
}

if (!continueActivity) {
    startActivity(new Intent(this, ActivityA.class));
    finish();
}

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

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