在onCreate方法中创建一个对话框- Leak



当我运行我的应用程序时,我似乎间歇性地得到以下错误。

"活动已泄露窗口com.android.internal.policy.impl.PhoneWindow$DecorView@40521348,最初添加在这里"

我所做的就是在onCreate()方法中创建对话框,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
//Create splash-screen object and pass in width and height (width and height are defined and valid, I just removed them from this post to make it more readable)
    splash = new SplashScreen(MainActivity.this, width, height);
//Create dialog that will show splash-screen 
    loading_dialog = new Dialog(MainActivity.this,android.R.style.Theme_Black_NoTitleBar_Fullscreen);
//Set and display splash screen view
    loading_dialog.setContentView(splash);
    loading_dialog.show();
}

你知道是什么问题吗?

你可以在onCreate中创建对话框,但你不能显示它,因为活动还不可见。谷歌一下,有个例子可以告诉你怎么做

我认为你需要在展示对话框之前创建对话框。

你需要做的是:

loading_dialog.create().show();

而不是
loading_dialog.show();

我发现类似的Q,你可以使用它们

活动已泄露窗口com.android.internal.policy.impl.PhoneWindow$DecorView@44f72ff0最初添加在这里

活动已经泄漏了最初添加的窗口

活动已泄露窗口com.android.internal.policy.impl.PhoneWindow$DecorView@46029dd0最初添加在这里

这可能是因为您在关闭Activity之前没有cancel()对话框。尝试在onStop()方法中对对话框执行cancel()。这应该会有所帮助。

相关内容

  • 没有找到相关文章

最新更新