我正在创建一个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。
但是同样,如果您要显示一些暂停代码,它会更容易帮助您。
进一步阅读:异步任务