Service nicht erstellt wird (oder die Verbindung) nach bindService()

Habe ich diese einfache service -, daß die Sendungen der aktuellen Position des Benutzers. Ich will die Bindung Mechanismus nur zur Kontrolle der service-life-cycle, aber der service ist einfach nicht starten.

Was habe ich falsch gemacht?

public class GPSActivity extends ListActivity {
...
protected void onResume() {
        super.onResume();

        Log.i("Service", "Service bound");
        Intent intent = new Intent(this, LocationService.class);
        bindService(intent, service_connection , Context.BIND_AUTO_CREATE);
    }

protected void onPause() {
        if (dataUpdateReceiver!=null)
            unregisterReceiver(dataUpdateReceiver);
        unbindService(service_connection);
        super.onPause();
    }
class LocationServiceConnection implements ServiceConnection{
        public void onServiceConnected(ComponentName name, IBinder service) {
            Log.i("Service", "Service Connected");
        }
                public void onServiceDisconnected(ComponentName name) {

        }
    }
}

LocalBinder.java

public class LocalBinder<S> extends Binder {
    private String TAG = "LocalBinder";
    private  WeakReference<S> mService;


    public LocalBinder(S service){
        mService = new WeakReference<S>(service);
    }


    public S getService() {
        return mService.get();
    }
}

LocationService.java

public class LocationService extends Service {
    public void onCreate() {
        initLocationListener();
        Log.i("Location Service","onCreate()");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i("Location Service", "Received start id " + startId + ": " + intent);
        return START_NOT_STICKY;
    }

    private final IBinder mBinder = new LocalBinder<LocationService>(this);
    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }
}

AndroidManifest.xml

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    ...

    <service android:name=".LocationService">
    </service>
</application>  

EDIT: Behoben Dank NickT Antwort.

Den manifest-Eintrag nicht über einen intent-filter oder den richtigen Namen

<service
   android:enabled="true"
   android:name="com.android.gps.services.LocationService">
   <intent-filter>
          <action android:name="com.android.gps.services.LocationService" />
   </intent-filter>
</service>

Und die Absicht, die ich für die Bindung verwendet wurde, wie Sie Sie verwenden müssen, um beim Start einer Aktivität. der richtige ist:

Intent intent = new Intent("com.android.gps.services.LocationService");
  • Was macht Ihr public IBinder onBind(Intent intent) Methode in LocationService.java Aussehen?
  • Ich Schnitt die Frage an, gehören der onBind () - Methode.
  • Hm. Und Sie sind auch nicht immer die Log.i("Location Service","onCreate()"); melden Sie sich in Ihrem logcat?
  • Ich bin es nicht.
InformationsquelleAutor bughi | 2012-05-14
Schreibe einen Kommentar