Java 带线程的LocationListener.Sleep

Java 带线程的LocationListener.Sleep,java,android,Java,Android,我的应用程序使用进度对话框让我的用户知道位置侦听器当前正在搜索其当前坐标,如图所示: ProgressDialog searching; locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationListener = new GPSLocationListener(); locationManager.requestLocationUpdates(LocationManag

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

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秒吗?然后检查我的位置对象是否仍然为空,然后取消搜索

我可以同时运行位置侦听器和thread.sleep吗?我已经看过甲骨文笔记中的Thread.Sleep,但我仍然不是100%确定

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

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

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

我已经看过甲骨文笔记中的Thread.Sleep,但我仍然不是100%确定

由于甲骨文与安卓系统没有什么关系,所以你可以更好地阅读