2013-07-27 67 views
0

我的應用程序使用進度對話框,讓我的用戶知道,如圖所示位置監聽器目前正在尋找他們的當前座標:LocationListener的用了Thread.Sleep

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的Oracle註釋,但我仍然不能100%確定。

回答

0

我可以使用一個簡單的Thread.Sleep靜態實例設置爲 - 例如 - 20秒?

這將是災難性的。不要在Android的主應用程序線程上使用sleep(),因爲它會凍結您的用戶界面,不管您的sleep()調用是否設置爲長。

在20秒內有很多更好的方法來控制你的活動。最輕的解決方案是在其中一個小部件上調用postDelayed(),其中Runnable將在20秒內執行您想要的操作。

我已經看過Thread.Sleep的Oracle註釋,但我仍然不是100%確定。

由於甲骨文與Android沒有多大關係,所以您最好是閱讀Android documentation