2012-06-15 92 views
0

我用下面的代码来启动activity:不知何故Android的活动恢复

Intent intent = new Intent(XXX.this, YYY.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(data); 

,我不知道为什么,XXX的onResume()方法被调用。 因为我试图弹出一个progressDialogonResume(),我得到了以下错误:

`android.view.WindowLeaked: Activity XXX has leaked window [email protected] that was originally added here.` 

在调试模式下,我设置了breakpoint在方法onResume()的第一线,它永远不会停在那里,但我仍然得到上面的错误。

为什么会发生这种情况?

+0

你不应该调用startActivity(intent),而不是startActivity(data)? – Xono

+0

看到这个问题:http://stackoverflow.com/q/2850573/844882 –

回答

0

因为onResume是Activity生命周期的一部分,所以无论这是否是第一次创建Activity,都会调用它。如果你想在用户返回时打开一个对话框,你应该把这个行为放在重新启动而不是onResume上。

编辑:没有看到您的对话框创建代码,很难说出什么原因导致错误。但是,请确保您正在调用showDialog并从onCreateDialog返回创建的对话框,而不仅仅是在onResume中创建对话框本身。

+0

它是mProgressDialog = ProgressDialog.show(this,“”,getResources()。getString(R.string.notice_login_server),true,false); – newme

+0

如果使用Intent.FLAG_ACTIVITY_REORDER_TO_FRONT,则调用onresume而不是onrestart – newme