Android.Автоматическое закрытие второго действия через минуту после того, как приложение переходит в фоновый режим - PullRequest
0 голосов
/ 28 июня 2019

Предположим, что в моем приложении для Android есть два действия A и B. Задание A начинает действие B (A-> B). Когда отображается активность B, пользователь нажимает кнопку «Домой», и приложение переходит в фоновый режим. Теперь я хочу, чтобы действие B автоматически закрывалось в фоновом режиме (поскольку на нем отображается некоторая секретная информация), скажем, через минуту после того, как пользователь нажал кнопку «Домой». Какой лучший способ реализовать это?

Я пытался сделать это, используя Handler и postDelayed (), помещенные в onStop () операции B, но иногда кажется, что это не работает, и операция B остается не завершенной, когда приложение возобновляется из фонового режима ...

Мой код:

@Override
protected void onStop() {
    super.onStop();
    mLockHandler = new Handler();
    mLockRunnable = new Runnable() {
        @Override
        public void run() {
            finish();
        }
    };
    mLockHandler.postDelayed(mLockRunnable, 60 * 1000);
}

1 Ответ

1 голос
/ 28 июня 2019

Android может завершить деятельность самостоятельно, когда у него недостаточно ресурсов.
Если это произошло, я полагаю, что обработчик также недоступен. Если вы очень хотите справиться с окончанием своей деятельности, вам нужно создать класс, который будет выживать в течение жизненного цикла активности (AKA Singleton). Это не позволило бы Android удалить его из памяти.
Хотя у вас будет еще пара проблем:
Ваш синглтон не сможет завершить активность, если он находится в неправильном состоянии.
Установка активности на синглтон приведет к утечке памяти.
Подводя итог, попытка изменить жизненный цикл деятельности - плохая идея. Может быть, какой-нибудь Service класс решит вашу задачу в фоновом режиме?

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