我正在创建一个AlertDialog
并AlertDialog.Builder
显示它。显示后,我需要暂停应用程序,直到用户确认对话框。
我确实需要在显示 Dialog 线程的方法中暂停,因为它的调用方法在返回后会引发致命错误。
有没有办法做到这一点?
我正在创建一个AlertDialog
并AlertDialog.Builder
显示它。显示后,我需要暂停应用程序,直到用户确认对话框。
我确实需要在显示 Dialog 线程的方法中暂停,因为它的调用方法在返回后会引发致命错误。
有没有办法做到这一点?
另一种处理方法是使用线程。在非 UI 线程中AlertDialog
,show()
使用runOnUiThread()
. Activity
调用Object.wait()
您的非 UI 线程,并调用Object.notifyAll()
您AlertDialog
的OnClickListener
. 然后,非 UI 线程将等到用户单击您的AlertDialog
.
在 Android 中,您不能暂停 UI 线程,因为它会导致操作系统Application is not responding
在暂停大约 5 秒后显示对话框。
此外,正如 CommonsWare 在评论中提到的,对话框不在单独的线程中运行。
如果没有看到您的代码,这有点难以回答,但我现在可以建议的是将您需要“暂停”的所有代码放在AsyncTask
.
您可以将所有代码放在方法中的暂停之前onPreExecute()
,而不是显示您的对话框,并在doInBackground()
方法中,可能在一个while循环或带有易失变量或其他东西的东西中(此代码在后台线程上运行,因此它不会卡住UI-Thread),然后是onPostExecute()
方法中暂停后的代码。两者都onPreExecute()
在onPostExecute()
UI 线程上运行。完成后onPost
调用doInBackground
。
但是同样,如果您要显示一些暂停代码,它会更容易帮助您。
进一步阅读:异步任务