启动使用LocationListener的服务时,Android应用程序崩溃了吗?

时间:2014-10-16 18:17:52

标签: java android android-activity service

当我添加位置更新请求时,我很难理解这个应用程序崩溃的原因。

我参加了我的活动:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        startService(new Intent(this, LocationService.class));
    }

我的服务代码如下:

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.widget.Toast;

public class LocationService extends Service {
    public LocationManager locationManager;
    public MyLocationListener listener;

    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public void onStart(Intent intent, int startId) {
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        listener = new MyLocationListener();
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 4000, 0, listener);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 4000, 0, listener);
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        locationManager.removeUpdates(listener);
    }

    public class MyLocationListener implements LocationListener {

        public void onLocationChanged(final Location loc) {
                Toast.makeText(getApplicationContext(), "New Location - Lat: " + String.valueOf(loc.getLatitude())
                 + "; Lon: " + String.valueOf(loc.getLongitude()), Toast.LENGTH_SHORT).show();
        }

        public void onProviderDisabled(String provider) {
            Toast.makeText(getApplicationContext(), "GPS Disabled", Toast.LENGTH_SHORT).show();
        }

        public void onProviderEnabled(String provider) {
            Toast.makeText(getApplicationContext(), "GPS Enabled", Toast.LENGTH_SHORT).show();
        }

        public void onStatusChanged(String provider, int status, Bundle extras) {

        }

    }
}

在那一刻,我只是想祝酒工作。后来我计划通过广播将数据返回到活动中,但无法理解为什么这个烤面包不起作用。

如果我在onStart中注释掉代码并用toast替换它,那么就会显示toast。

有没有人知道为什么它不起作用?

我已在 AndroidManifest.xml

中注册了该服务
    <service
        android:name=".LocationService">
    </service>

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

任何指导都将不胜感激。

由于

0 个答案:

没有答案