isFinishing не всегда точен в onPause ()

#android

#Android

Вопрос:

Я столкнулся со сценарием, в котором isFinishing() возвращал false, но действие все еще завершалось.

В сценарии есть Activity Abc, который содержит кнопку. Когда пользователь нажимает на кнопку, запускается действие Xyz.

Теперь в Abc activity я нажал кнопку на нем и кнопку «НАЗАД» на телефоне почти одновременно, при этом кнопка «НАЗАД» должна быть через несколько миллисекунд после нажатия кнопки на Abc. Я получил следующее сообщение в журнале:

 09-30 17:32:41.424 I/Abc(20319): [onPause] com.example.Abc@40605928
09-30 17:32:41.424 D/Abc(20319): In onPause, this.isFinishing()=false
09-30 17:32:41.464 I/Xyz(20319): [onCreate] com.example.Xyz@405caf68
09-30 17:32:41.604 I/Xyz(20319): [onStart] com.example.Xyz@405caf68
09-30 17:32:41.644 I/Xyz(20319): [onResume]com.example.Xyz@405caf68
09-30 17:32:41.824 I/Abc(20319): [onStop] com.example.Abc@40605928
09-30 17:32:41.884 D/Abc(20319): [onDestroy] com.example.Abc@40605928
  

Из приведенного выше журнала мы видим, что активность Abc была уничтожена, даже когда isFinishing() вернул false в onPause() .

Код, который у меня есть в onPause ():

 @Override
protected void onPause() {
    super.onPause();

    Log.d(TAG, "[onPause] "   this);
    Log.d(TAG, "In onPause, this.isFinishing()="   this.isFinishing());
}
  

Это ошибка в Android?

Спасибо.

Ответ №1:

Я думаю, что это ошибка в ОС Android. Когда действие находится в onPause (), ОС должна игнорировать нажатие на кнопку «НАЗАД».