java - 线程和用户界面交互

标签 java android

我正在尝试制作一个应用程序,让用户将他的位置记录到网络服务器中,但我陷入了这一切的流程中。 我正在使用一些线程,但目前令人困惑的是如何最好地使用它们。 在主线程 (1) 上有 UI,用户点击按钮来记录位置,然后点击该按钮后,UI 线程显示一个“请稍候”对话框并启动一个新线程 (2) 来获取 GPS地点。 据我现在的理解:UI 线程现在卡在显示对话框中,并且线程(2)正在获取位置。接下来,当线程(2)完成获取位置后,我需要另一个线程(3)与http服务器通信。 据我了解,主线程(1)无法处理任何“sleep()”来定期检查其他线程为其设置的标志。 因此,关闭“请稍候”对话框的唯一方法是从其中一个线程中。正如你们所看到的,我有点困惑。 哪种方法是解决这个问题的最佳方法(严格来说线程同步)? 基本上我需要一个用户界面,在后台显示一个请等待对话框,应用程序首先获取 GPS 坐标,第二次获取位置记录在网络服务器上。 最后向用户展示成功与否。 谢谢!

最佳答案

您可以使用@vikram 评论的AsyncTaskActivity.runOnUiThread() 是另一种选择。 View.post() 是另一个。

关于java - 线程和用户界面交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17778397/

相关文章:

android - Android应用添加MapView时出现cross-loader异常

android - Ttitanium webview 和 HTML5 应用缓存

java - 没有JRE的客户端可以安装任何浏览器吗?

java - 与第三方库解耦的设计模式

Jellybean 中的 Android SQLite 数据库事务/锁定更改

android - onActivityResult 抛出传递结果失败 ResultInfo

java - 我想在 Android 中的 SeekBar OnProgres 更改事件上设置图像的亮度?

java - 读取rcon命令响应

java - Apache Kafka : Failed to Update Metadata/java. nio.channels.ClosedChannelException

java - 如果通过 java 中的 jaxb 解码在 xml 文件中不存在该元素,如何设置该元素的默认值