Java 当我试图从我的类中获取设备位置时,我得到错误;Can';t在未调用Looper.prepare()的线程内创建处理程序
这是我获取坐标的一个非常简单的类,如果我从活动启动,它就可以工作,但当我试图从服务获取坐标时,我在构造函数DeviceLocation中得到了这个错误Java 当我试图从我的类中获取设备位置时,我得到错误;Can';t在未调用Looper.prepare()的线程内创建处理程序,java,android,service,geolocation,Java,Android,Service,Geolocation,这是我获取坐标的一个非常简单的类,如果我从活动启动,它就可以工作,但当我试图从服务获取坐标时,我在构造函数DeviceLocation中得到了这个错误 public class DeviceLocation implements LocationListener { private Context mContext; private LocationManager locationManager; public DeviceLocation(Context contex
public class DeviceLocation implements LocationListener {
private Context mContext;
private LocationManager locationManager;
public DeviceLocation(Context context) {
mContext = context;
locationManager =
(LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
try {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000 * 3, 0, this);
} catch (SecurityException e) {
e.printStackTrace();
}
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras){
}
}
我解决了这个问题,我应该写这句话
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000 * 3, 0, this, Looper.getMainLooper());
而不是
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000 * 3, 0, this);
请显示您试图从服务中使用它的代码。我有我的类处理程序,其中有由服务启动的变量mContext。从类处理程序中,我将这个DeviceLocation称为mDeviceLocation=newDeviceLocation(context);-这给了我一个ErrorHandler类是否扩展到任何其他类?发布代码是最好的方式,而不是描述itno,Handler-只是一个java类和服务,扩展的GcmListenerService将上下文(这)传递给我的处理程序实际上,我想我已经解决了这个问题,它必须像这样编写locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000*3,0,this,Looper.getMainLooper());