单击选项菜单时进度条显示有一些延迟
我面临在选项菜单中选择的项目上显示进度条的问题。 我的代码在这里:
case R.id.mnuLogout:
showDialog(Constants.PROGRESS_DIALOG);
closeOptionsMenu();
if(MyApp.IsLoggedOut())
handler.sendEmptyMessage(Constants.LOGOUT);
else
handler.sendEmptyMessage(Constants.ERROR_MSG);
IsLogged 方法完成后显示进度条。
I am facing the issue with displaying progressbar onItem selected in option menu.
My code is here:
case R.id.mnuLogout:
showDialog(Constants.PROGRESS_DIALOG);
closeOptionsMenu();
if(MyApp.IsLoggedOut())
handler.sendEmptyMessage(Constants.LOGOUT);
else
handler.sendEmptyMessage(Constants.ERROR_MSG);
Progressbar is displayed after completion of IsLogged method.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您在执行
AsyncTask
之后立即调用get()
,并且会丢失异步行为,因为此方法会等待任务完成。您应该将 try/catch 块中的所有代码添加到AsyncTask.onPostExecute()
方法中,并从此方法中关闭对话框。我认为您不需要向处理程序发送消息。
dispatchLogoutFinished()
在 UI 线程上执行,因此不需要同步。You're calling
get()
right after theAsyncTask
as executed and lose asynchronous behavior because this method waits until task is finished. You should add all the code in try/catch block toAsyncTask.onPostExecute()
method and also dismiss the dialog from this method.And I don't think you need to send messages to the handler. The
dispatchLogoutFinished()
is executed on the UI thread, so there's no need for synchronization.