Почему finish () не сразу завершает обработку? - PullRequest
3 голосов
/ 30 декабря 2011

Есть ли какая-то конкретная ситуация, когда удобно не выходить из Activity сразу после вызова finish()?

(иначе, почему этот метод не выходит из Activity сразу из дизайна?)

http://developer.android.com/reference/android/app/Activity.html#finish()

ОБНОВЛЕНИЕ

Когда я говорю немедленно, я имею в виду, что как раз вовремя вы позвоните по номеру finish() и, конечно же, убираетепри сохранении экземпляра bundle методы onStop и onDestroy не учитываются.

Чтобы увидеть пример, о котором я говорю, приведен фрагмент

onCreate(Bundle savedInstance){
    // code executed
    if(somecondition){
        finish();
    }
    // code which shouldn't be executed
}

. Вопрос в том, почемукод после условия также завершился до завершения операции, и почему вызов finish() не останавливает обработку немедленно

Ответы [ 5 ]

4 голосов
/ 30 декабря 2011

Не следует ли выполнить возврат, чтобы предотвратить выполнение приведенных ниже кодов:

if(somecondition){
    finish();
    return;
}
1 голос
/ 30 декабря 2011

Представьте, что у вас есть thread_0 с циклом, который обрабатывает все события.

Завершение вызова добавляет новое событие, но действие не прерывается, пока thread_0 не обработает событие.

0 голосов
/ 30 декабря 2011

Полагаю, Android позволяет сохранять некоторые данные даже после завершения (). Я думаю, что отмена может также повредить нить. В вашем случае вы можете использовать возврат; чтобы остановить выполнение кода.

0 голосов
/ 30 декабря 2011

finish () просто скрывает активность, но не убивает сразу.И делает его доступным для последующего уничтожения, когда ОС потребуется немного памяти для запуска других приложений или процессов.

0 голосов
/ 30 декабря 2011

Что-то для проверки: выполняете ли вы какие-либо асинхронные задачи, которые еще не выполнены?

...