0

My activity attempts to start and then bind a service that's supposed to run independently of it. This service turns the GPS on.

onCreate calls getApplicationContext.StartService, and onResume calls getApplicationContext.BindService. OnPause calls getApplicationContext.unbindService, although it never appears to run properly (the service connection never logs an unbind, although binds are logged when I treat it similarly).

Unfortunately, when I open up my Recents list, and slide the activity away, the Service stops and then re-starts itself almost immediately, dropping the GPS connection. What would cause this sort of behavior?

@Override
protected void onStart() {
    super.onStart();
}

@Override
protected void onResume() {
    super.onResume();

    // Start up the service
    Intent intent = new Intent(getApplicationContext(), LockService.class);
    getApplicationContext().bindService(intent, myConnection, Context.BIND_AUTO_CREATE);
}

@Override
protected void onPause() {
    super.onPause();
    Log.i(tag, "onPause");
    if (isBound) {
        getApplicationContext().unbindService(myConnection);
    }
}

...

// Bound service stuff
    LockService myService;
    boolean isBound = false;

    private ServiceConnection myConnection = new ServiceConnection() {

    @Override
    public void onServiceConnected(ComponentName className, IBinder service) {
        LockBinder binder = (LockBinder) service;
        myService = binder.getService();
        isBound = true;

        final boolean status = myService.getStatus();
        Log.i(tag, "service bound");
    }

    @Override
    public void onServiceDisconnected(ComponentName className) {
        isBound = false;
        Log.i(tag, "service unbound");
    }
};

Edit: I checked into this answer, but this just prevents the service from restarting immediately (it still gets hung up, and re-opening the activity re-initializes it):

Android onCreate Service called when Activity onDestroy called

Edit 2: I had gotten my hopes up a bit too far with this answer. It doesn't seem to fix anything either.

How to force the onServiceDisconnected() get called?

Edit 3: This might be a KitKat thing.

In android 4.4, swiping app out of recent tasks permanently kills application with its service . Any idea why?

Community
  • 1
  • 1

1 Answers1

0

Because swiping an app out of the Recents list kills it in Android version 4.4 (KK), I have opted to simply not show my app in the Recents list at all.

Oh well, it didn't really need to live there anyway. It exists quite happily inside the notification bar. I pity anyone who isn't so lucky, and needs to forcibly restart the service via a timer and some hackneyed code.