Java 当我试图从我的类中获取设备位置时,我得到错误;Can';t在未调用Looper.prepare()的线程内创建处理程序

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

这是我获取坐标的一个非常简单的类,如果我从活动启动,它就可以工作,但当我试图从服务获取坐标时,我在构造函数DeviceLocation中得到了这个错误

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());