У меня есть служба, которая запускается (не привязывается) к действию. Если действие уничтожается (например, нажатием кнопки "Назад" ), служба продолжает работать, это, конечно, предназначено. Однако, если я проведу активность из списка "последние приложения", служба немедленно перезапустится. Это воспроизводимо, каждый раз, когда действие/приложение вырывается из списка, появляется новый вызов службы onCreate-method. Нет звонка в onDestroy между ними!
Сначала я думал, что служба была убита андроидом, хотя я не видел причин для убийства (ни деятельность, ни служба не потребляют ресурсы, на самом деле они минималистичны и ничего не делают). Но потом я заметил, что служба действительно сбой.
V/MainActivity(856): onDestroy // swipe out of the list
I/ActivityManager(287): Killing 856:com.example.myapp/u0a10050: remove task
W/ActivityManager(287): Scheduling restart of crashed service com.example.myapp/.TestService in 5000ms
Код не примечателен, но здесь он
Активность:
public class MainActivity extends Activity {
    private static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.v(TAG, "onCreate, starting service...");
        startService(new Intent(this, TestService.class));
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.v(TAG, "onStart");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.v(TAG, "onDestroy");
    }
    //[...]
}
Услуги:
public class TestService extends Service {
    private static final String TAG = "Service";
    // onBind omitted
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.v(TAG, "onStartCommand");
        return super.onStartCommand(intent, flags, startId);
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.v(TAG, "onDestroy");
    }
}
Вкратце: Мой сервис не зависит от жизненного цикла активности, но только до тех пор, пока я не удаляю приложение из списка последних приложений. В этом случае служба перезапускается, но без вызова onDestroy.
Каждый раз, когда это происходит, теряется не только состояние службы, но и работа, выполняемая службой. Я просто хочу знать, почему причиной этого является салфетка.