gpt4 book ai didi

java - 即使在调用关闭后,进度对话框也会出现泄漏窗口错误

转载 作者:行者123 更新时间:2023-12-02 05:53:27 24 4
gpt4 key购买 nike

我有一个菜单按钮,当我单击它时,它会将一些数据发送到云端。当它发送数据时,我会显示一个进度对话框。一切都进行得很顺利,似乎一切都很好,我可以根据需要多次按下按钮,数据就会正确发送到云端。但是当我退出 Activity 时,我收到一条错误消息,指出存在窗口泄漏:

com.android.internal.policy.impl.PhoneWindow$DecorView{4321fd38 V.E..... R......D 0,0-1026,288} that was originally added here

“此处”指的是当我无法满足进度对话框时。

这是我的代码:

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
progressDialog = ProgressDialog.show(CruiseDetailRollCallActivity.this, "", "Loading...", true);//set up & show progress dialog

switch(item.getItemId()){
case R.id.menu_roll_call_opt_in:
//saveing something into Parse -- (a database online, check Parse.com if you want more info, but just treat this like I am saving something into the cloud)
currentUser.put("somethingBoolean", false);
currentUser.saveInBackground(new SaveCallback(){

@Override
public void done(ParseException e) { //once data has been put into the cloud
progressDialog.dismiss();//dismiss the dialog
supportInvalidateOptionsMenu();//refreshes the options menu
}
});

return true;

default:
return super.onOptionsItemSelected(item);
}
}

我应该提到,这不会使我的应用程序崩溃,而只是显示错误。我不知道为什么会发生这种情况,而且我觉得我不应该忽视它。

编辑:发现我的错误。它失败了,因为工作是因为我在操作栏上回击,并且将创建进度对话框,但永远不会关闭,因为它只是在完成的代码中被关闭。

最佳答案

我的猜测是,当您将 CruiseDetailRollCallActivity 传递到 currentUser.saveInBackground(new SaveCallback() 时,您会将 Activity 泄漏到 currentUser 对象中。 ..。您刚刚创建的 SaveCallback 类现在对 Activity 具有强引用。即使您退出该方法,它也永远不会被垃圾回收。您应该使用 WeakReference 然后它就可以被垃圾回收。

WeakReference<CruiseDetailRollCallActivity> weakRef = new WeakReference<CruiseDetailRollCallActivity>(CruiseDetailRollCallActivity.this)

然后,将weakRef传递给ProgressDialog构造函数:

progressDialog = ProgressDialog.show(weakRef.get(), "", "Loading...", true);

每当您在 Android 中传递 Context 时,请检查是否需要 WeakReference,以便它可以被垃圾收集。整个应用程序很容易泄露。

关于java - 即使在调用关闭后,进度对话框也会出现泄漏窗口错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23332267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com