2013-04-21 90 views
0

我正在编写客户端服务器程序,该客户端将其位置提供给服务器,并由服务器显示它。 我有一个类来获取位置的经度和纬度。 我有一个计时器每2秒检索一次位置。但是,我得到这个错误: 不能内螺纹已不叫Looper.prepare创建处理程序()无法创建处理程序... Looper.prepare()

这里是我的onCreate方法内部定时器:

time.scheduleAtFixedRate(new TimerTask() { 

@Override 
public void run() { 

GetLocation(); 

} 
}, 0, sampling_interval); 
} 

,这里是getLocation方法:

private void GetLocation(){ 

    gps = new GPSTracker(MainActivity.this);  
    // check if GPS enabled 
    if(gps.canGetLocation()){ 

     double latitude = gps.getLatitude(); 
     double longitude = gps.getLongitude(); 


     Log.d("Latitude", Double.toString(latitude)); 

    }else{ 

     gps.showSettingsAlert(); 
    } 
} 

问题是: gps = new GPSTracker(MainActivity.this); 如果我把这条线放在MainActivity里面没有问题,但问题是我没有得到更新的位置,我只是得到相同的位置,因为它只创建一次。所以这行应该在GetLocation()方法里面,每次定时器调用它时我都可以获得更新的位置。

任何帮助?

+0

在MainActivity中使用Create Handler并使用handler.post来调用上述方法,因为要访问MainActivity之外,需要一个上下文 – Pragnani 2013-04-21 16:23:40

回答

0

这是Android座右铭:避免Timer/TimerTask改为使用Handler

相关问题