0

我的应用程序使用进度对话框让我的用户知道位置侦听器当前正在搜索他们的当前坐标,如下所示:

ProgressDialog searching;

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

locationListener = new GPSLocationListener();

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
            0, locationListener);

searching = ProgressDialog.show(this, null, "Gaining GPS posistion...",  false,true);

这很棒,但我想设置一个可以运行的时间限制。我可以使用设置为 - 例如 - 20 秒的简单 Thread.Sleep 静态实例吗?这将检查我的位置对象是否仍然为空,然后取消搜索?

我可以同时运行 Location Listener 和 thread.sleep 吗?我已经查看了 Thread.Sleep 的 Oracle 注释,但我仍然不能 100% 确定。

4

1 回答 1

0

我可以使用设置为 - 例如 - 20 秒的简单 Thread.Sleep 静态实例吗?

那将是灾难性的。不要sleep()在 Android 的主应用程序线程上使用,因为它会冻结您的 UI,无论您的sleep()呼叫设置的时间有多长。

有许多更好的方法可以在 20 秒内控制您的活动。最轻量级的解决方案是调用postDelayed()你的一个小部件,Runnable它会在 20 秒内执行你想要的。

我已经查看了 Thread.Sleep 的 Oracle 注释,但我仍然不能 100% 确定。

由于 Oracle 与 Android 关系不大,因此您最好阅读Android 文档

于 2013-07-27T19:29:39.230 回答