2015-04-24 2 views
4

Проверка некоторые унаследованного кода, я нашел этот фрагмент кода:Можно ли возобновить действие Android после финиша()?

@Override 
public void onResume() { 
    if (!isFinishing()) { 
     ... 
    } 
    super.onResume(); 
} 

несмотря на super.onResume() вызов в конце метода, который обескуражен:

Примечание: Ваша реализация этих методов жизненного цикла должны всегда называют суперкласса реализации, прежде чем делать какие-либо работы, как показано в примерах выше http://developer.android.com/guide/components/activities.html

Я беспокоюсь о вызове if (!isFinishing()), имеет ли это смысл? как я могу видеть, проверка. Код операции mFinished переменная устанавливается в true только на finish() и finishActivity(), может ли через жизненный цикл Android возобновлять деятельность, которая разрушается?

Заранее спасибо.

+0

Это интересно. Где вы нашли этот код? – shkschneider

+0

Является основным видом деятельности моей компании. –

+0

onDestroy(): Последний звонок, который вы получаете до того, как ваша деятельность будет уничтожена. Это может произойти либо из-за завершения операции (кто-то по имени заканчивает(), либо потому, что система временно уничтожает этот экземпляр активности для экономии места. Вы можете различать эти два сценария с помощью метода isFinishing(). Https: //developer.android.com/reference/android/app/Activity.html – shkschneider

ответ

1

Наконец, унаследованный код был вызовом finish() под некоторым circunstances в методе onCreate(). Но взглянуть на onCreate()javadoc:

Вы можете назвать отделку() внутри этой функции, в этом случае OnDestroy() будет немедленно вызваны без какого-либо из остальной части жизненного цикла деятельности (OnStart() , onResume(), onPause() и т. д.).

Таким образом, этот isFinishing() вызов бесполезно внутри onResume()

1

Ответ на ваш вопрос: «Нет» деятельность не может быть возобновлена, если она была уничтожена.
Вот хорошая дискуссия: Understanding of isFinishing()

Причина этого кода может быть различать ориентацию изменения и фактической отделки деятельности Важно отметить здесь является isFinishing: правда, что означает, что вызов isFinishing() в OnDestroy() возвращает истину, то что происходит, когда:

пользователь нажимает кнопку «назад» или вид деятельности в код вызывает это finish() (isFinishing() возвращает ложь, когда активность адресности закрыта после того, как телефон rotaion для того, чтобы быть запущен снова)

http://ogrelab.ikratko.com/activity-lifecycle-explained-in-details/

+0

Я понимаю вашу точку зрения и причину использования isFinishing() в onDestroy, но до сих пор не имеет смысла для меня в onResume() –

+0

Нет смысла использовать isFinishing() в onDestroy, потому что onDestroy вообще не может быть вызван , – Radoslav

+0

Это не то, что мы обсуждаем здесь –

Смежные вопросы