带有Thread.Sleep的LocationListener

时间:2013-07-27 19:22:09

标签: java android

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

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);

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

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

1 个答案:

答案 0 :(得分:0)

  

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

那将是灾难性的。不要在Android中的主应用程序主题上使用sleep(),因为无论您的sleep()调用设置的时间长短,它都会冻结您的用户界面。

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

  

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

由于Oracle与Android几乎没有关系,因此您最好阅读Android documentation