Сбой службы Android после удаления приложения из списка последних приложений

У меня есть служба, которая запускается (не связана) с деятельностью. Если действие уничтожается (например, нажатием кнопки «Назад»), служба продолжает работать, это, конечно, предназначено. Однако, если я удаляю активность из списка «недавних приложений», служба немедленно перезапускается. Это воспроизводимо, каждый раз, когда действие / приложение удаляется из списка, происходит новый вызов метода onCreate службы. Никаких звонков на onDestroy между!

Сначала я подумал, что сервис убит Android, хотя я и не видел причин для уничтожения (ни деятельность, ни сервис не занимают ресурсоемких вещей, на самом деле они минималистичны и ничего не делают). Но потом я заметил, что сервис на самом деле падает.

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.

Каждый раз, когда это происходит, теряется не только состояние службы, но и работа, которую выполняет служба. Я просто хочу знать, почему причиной этого является размах.

Ответы на вопрос(4)

Ваш ответ на вопрос