isFinishing在onPause()中并不总是准确的

时间:2011-10-01 00:58:30

标签: android

我遇到了一个场景,即isFinishing()返回false,但活动仍然退出。

场景中有Activity Abc,其中包含一个按钮。当用户单击该按钮时,将启动Activity Xyz。

现在在Abc活动中,我几乎同时点击了它上面的按钮和手机上的BACK按钮,在触摸Abc上的按钮后几秒钟后按下BACK按钮。我收到了以下日志消息:

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

从上面的日志中我们可以看到,即使isFinishing()在onPause()中返回false,Abc活动也被破坏了。

我在onPause()中的代码是:

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

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

这是Android中的错误吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为这是Android操作系统中的一个错误。 当一个活动在onPause()中时,操作系统应该忽略单击它的BACK按钮。