2012-02-10 3 views
5

По документу, «OnPause» называется, когда:Почему «onPause» не вызван в следующей ситуации?

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

По сравнению с «OnStop», разница:

не Вызывается, когда активность больше не видна пользователю, так как другая деятельность была возобновлена ​​и покрывает это.

Но когда я долго-пресс HW-Home ключ и «недавние приложения» показывает вверх, «OnPause» не называется.

В настоящий момент я не могу долго взаимодействовать с исходной деятельностью, , но она по-прежнему видна.

Я смущен этой ситуацией. Пожалуйста, помогите объяснить.

спасибо. BR, Генри

+0

Можете ли вы разместить свой код в onPause() – Raj

+0

, см. Это: http: //stackoverflow.com/a/9190541/265167 –

ответ

7

На самом деле это происходит, потому что, когда клавиша Home нажата долго, активность не запускается. OnPause/onStop будет вызываться только при выборе одного из приложений, присутствующих в списке «Недавние приложения».

Документов из OnPause() довольно ясны:

Вызывается как часть жизненного цикла активности, когда активность идет на задний план, но (пока) не был убит.

+0

Thanks , MobileCushion, Ваш ответ верный. Точка «Недавнее приложение» не будет добавлена ​​в стек приложения, и, следовательно, результат. – Henry

-1

Когда вы воспитываете недавние приложения OnStop метод вызывается, OnStop метод вызывается, как только интерфейс деятельности не в фокусе как таковой

0

@Henry пожалуйста Попробуйте сами путем тестирования потока приложения. Создайте действие, в котором переопределите все методы и журнал печати во всех методах. Поток находится onCreate >> onStart/restart >> onResume, и когда вы нажимаете домашнюю кнопку или запускаете любую новую активность, тогда она вызывает onPause >> onStop, и если вы заканчиваете свое приложение, ваше приложение уничтожает/заканчивает так, где это путаница.

0

Это то, что говорит, что официальные документы о onPause()

Вызываются как часть жизненного цикла активности, когда активность идет на задний план, но (пока) не были убиты. Образец к onResume().

Когда активность B запускаются перед активностью А, этот обратный вызов будет ссылаться на А. В не будет создан до OnPause элементов а() возвращает, поэтому обязательно что-нибудь пространное не делать.

Подробнее please see this.

3
public class MainActivity extends Activity 
{ 
    String tag="my result"; 

    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Log.v(tag,"I am in oncreate"); 
    } 

    @Override 
    protected void onDestroy() { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
     Log.v(tag,"I am in onDestroy"); 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     Log.v(tag,"I am in onpause"); 
    } 

    @Override 
    protected void onRestart() { 
     // TODO Auto-generated method stub 
     super.onRestart(); 
     Log.v(tag,"I am in onRestart"); 
    } 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     Log.v(tag,"I am in onresume"); 
    } 

    @Override 
    protected void onStart() { 
     // TODO Auto-generated method stub 
     super.onStart(); 
     Log.v(tag,"I am in onstart"); 
    } 

    @Override 
    protected void onStop() { 
     // TODO Auto-generated method stub 
     super.onStop(); 
     Log.v(tag,"I am in onstop"); 
    } 
} 

Запустить его и проверить лодку.нажмите кнопку «Назад», а затем проверьте. После повторного запуска приложения и

Нажмите кнопку вызова, затем проверьте логарифм, нажмите кнопку «Назад» и снова проверьте логарифм. вы можете легко понять жизненный цикл Деятельности.

2

Во многих современных телефонах список последних приложений является активным, и он вызывает . Я тестировал это на нескольких телефонах Samsung и LG, а пакеты - com.android.systemui и com.lge.launcher2 соответственно.

Таким образом, кажется, что вы не можете полагаться на получение onPause при открытии экрана последних приложений. Мне интересно, сколько устройств вам не датировано ...

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