我的应用程序需要读取 GPS,因此在主线程上我启动了一个读取 GPS 的线程,但我无法显示一个显示“请稍候”的对话框。我也使用处理程序进行绑定(bind),但这也不起作用。从第二个线程控制“请稍候”对话框的最佳方法是什么?谢谢!
public void showWaitDialog() {
prgDialog = new ProgressDialog(context);
prgDialog.setTitle("Please wait.");
prgDialog.setMessage("Please wait.");
prgDialog.setCancelable(false);
prgDialog.show();
}
最佳答案
您可以:
在您的 UI 线程(例如,在
Activity
)中定义一个Handler
,然后将其传递给您的线程。现在从您调用handler.post(runnable)
的线程中排队要在 UIThread 上执行的代码。在您的
Activity
中定义一个BroadcastReceiver
并从您的线程发送一个Intent
以及Bundle 中的必要信息
使用
AsyncTask
和方法publishProgress
()、onProgressUpdate()
或onPostExecute()
通知Activity
进度或任务何时完成使用
runOnUiThread
。
这取决于您的需求。对于短期运行的异步操作,AsyncTask
是一个不错的选择。
关于java - 如何从 UI 线程以外的线程显示对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17798780/