【发布时间】:2014-04-28 04:01:29
【问题描述】:
我有一个菜单按钮,当我点击它时,它会将一些数据发送到云端。在发送数据时,我会显示一个进度对话框。每件事都很顺利,似乎很好,我可以按我想要的次数多次按下按钮,数据会正确地发送到云端。 但是当我退出活动时,我收到一条错误消息,提示存在窗口泄漏:
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);
}
}
我应该提一下,这不会使我的应用程序崩溃,而只是显示错误。我不知道为什么会这样,我觉得我不应该忽略它。
EDIT:发现我的错误。它失败了,因为工作是因为我正在回击操作栏,并且将创建进度对话框但从未关闭,因为它只是在完成的代码中被关闭。
【问题讨论】:
-
你应该在
onStop().中解雇Progress Dialog -
@SimplePlan 请在下面查看我对您的回答的评论。 onStop() 是可终止的,根据操作系统的决定,onStop() 可能永远不会被执行。
标签: java android parse-platform progressdialog