3

在我的 android 应用程序中有一个启动屏幕,它检查 gps 并获取纬度和经度。当用户打开 gps 并运行我的应用程序时,它不会等待位置修复。该应用程序只显示一个错误对话框并退出。所以我插入了一些代码等待执行到大于零的纬度和经度。但这不起作用。它只是等待和等待。任何帮助将不胜感激。

这是我的代码

    if(gps.getLatitude()==0.0&&gps.getLongitude()==0.0){
    while(gps.getLatitude()>0.0&&gps.getLongitude()>0.0){
    try {
    new Thread() {
     public void run() {
       try{
     // calling background Async task to load Google Places
     new LoadPlaces().execute();
     } 
        catch (Exception e) {
         Log.e("inside thread", e.getMessage());
    }
                                                                       }
   }.wait();
  } catch (InterruptedException e) {
 // TODO Auto-generated catch block
    e.printStackTrace();
 }
    }
    }
   else{
 // calling background Async task to load Google Places
 new LoadPlaces().execute();
   }
4

2 回答 2

2

您的 UI 线程不应该执行阻塞调用,例如Thread.wait():这样做会冻结整个线程,从而导致应用程序无响应 (ANR) 对话框(或死锁或终止)。阅读有关进程和线程的 Android 开发人员指南,以及保持您的应用响应:在开始编写多线程代码之前,了解它们所涵盖的内容很重要。

然后,通读制作您的应用程序位置感知指南:特别是接收位置更新。这解释了如何获取最后一个已知位置(如果有),并实施 aLocationListener以接收更新。

于 2013-05-28T05:16:41.353 回答
-1

您可以使用 LocationListener.onLocationChanged 来观看位置变化

于 2013-05-28T05:10:36.483 回答