El servicio Android se bloquea después de que la aplicación se borra de la lista de aplicaciones recientes

Tengo un servicio que se inicia (no está vinculado) por una actividad. Si la actividad se destruye (por ejemplo, al presionar el botón Atrás), el servicio continúa ejecutándose, por supuesto, esto está destinado. Sin embargo, si saco la actividad de la lista de 'aplicaciones recientes', el servicio se reinicia de inmediato. Esto es reproducible, cada vez que la actividad / aplicación se elimina de la lista, hay una nueva llamada al método onCreate del servicio. No hay llamada a onDestroy en medio!

Primero, pensé que el servicio era asesinado por android, aunque no vi ninguna razón para el asesinato (ni la actividad ni el servicio hacen cosas que consumen recursos, de hecho son minimalistas y no hacen nada). Pero luego me di cuenta de que el servicio realmente se bloquea.

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

El código no es digno de mención, pero aquí está

Actividad:

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");
    }

    //[...]
}

Servicio:

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");
    }

}

En resumen: mi servicio es independiente del ciclo de vida de la actividad, pero solo mientras no elimine la aplicación de la lista de aplicaciones recientes. En ese caso, el servicio se reinicia pero sin una llamada a onDestroy.

Cada vez que esto sucede, no solo se pierde el estado del servicio, sino también el trabajo que está haciendo el servicio. Solo quiero saber por qué el golpe es la razón de esto.