在我被讽刺之前,为了阻塞主 UI 线程,这里是场景:
- 服务每天运行一次 - 大约需要 15 秒才能完成。繁重的数据库事务
- 巧合的是,用户在那段时间启动了应用程序
- 主屏幕从数据库加载数据
- 但是由于数据库被锁定(步骤 1),这会引发错误。
所以我需要冻结 UI 线程,直到服务完成。没有 AsyncTask,因为 UI 将继续执行并抛出错误。我已经设法让“onResume”功能进入睡眠状态,直到服务完成。但在那段时间里,我无法显示任何对话框告诉用户等待或任何进度条告诉用户坐好。
如果我尝试
start onResume
if (service is running?)
show progress dialog
while the service is running, thread.sleep
dismiss progress dialog
end onResume
线程睡得很好,醒来很好。但是该死的进度对话框直到 onResume...resumes 才会显示!底线,我如何在让主线程进入睡眠状态之前显示一个指示器(progressdialog 或对话框)?
我对加载另一个活动直到服务恢复的解决方案持开放态度。我已经尝试过了,但是之前的活动继续愉快地进行:|