如何解决单击选项菜单时,ProgressBar会显示延迟
| 我在选项菜单中显示进度条onItem时遇到问题。 我的代码在这里:case R.id.mnuLogout:
showDialog(Constants.PROGRESS_DIALOG);
closeOptionsMenu();
if(MyApp.IsLoggedOut())
handler.sendEmptyMessage(Constants.LOGOUT);
else
handler.sendEmptyMessage(Constants.ERROR_MSG);
IsLogged方法完成后,将显示进度栏。
解决方法
您正在
AsyncTask
之后立即调用get()
并失去异步行为,因为此方法一直等到任务完成。您应该将try / catch块中的所有代码添加到AsyncTask.onPostExecute()
方法中,并从该方法中关闭对话框。
void doLogout() {
new LogoutTask().execute();
}
void dispatchLogoutFinished() {
dismissDialog(Constants.PROGRESS_DIALOG);
if (MyApp.IsLoggedOut()) {
// do something
} else {
// do something else
}
}
private class LogoutTask extends AsyncTask<Void,Void,Void> {
protected void onPreExecute() {
TheActivity.this.showDialog(Constants.PROGRESS_DIALOG);
}
protected Void doInBackground(Void... params) {
return null;
}
protected void onPostExecute(Long result) {
TheActivity.this.dispatchLogoutFinished();
}
}
而且我认为您不需要向处理程序发送消息。 ѭ5是在UI线程上执行的,因此不需要同步。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。