IntentService будет уничтожен после того, как я остановлю свое приложение

Я имею в виду соображения дизайна Android: AsyncTask vs Service (IntentService?)

Согласно обсуждение,AsyncTask не подходит, потому что он жестко "привязан" к вашей Activity

Итак, я запускаю Thread(я предполагаю, что AsyncTask и Thread относятся к одной категории), имеют бесконечность работающий цикл в нем и провел следующее тестирование.

  • Я вышелиз своего приложения, продолжая нажимать программную клавишу «Назад», пока не увидел главный экран. Тема все еще работает.
  • Я убилсвое приложение, выбравУправление приложениями -> Приложение -> Принудительная остановка. Поток остановлен.

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


Intent intent = new Intent(this, SyncWithCloudService.class);
startService(intent);

public class SyncWithCloudService extends IntentService {
    public SyncWithCloudService() {
        super("SyncWithCloudService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        int i = 0;
        while (true) {
            Log.i("CHEOK", "Service i is " + (i++));
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                Log.i("CHEOK", "", ex);
            }
        }
    }
}

    // Doesn't matter whether I use "android:process" or not.
    
    

Однако я обнаружил, что

  • я закрылсвое приложение, продолжая нажимать программную клавишу «Назад», пока не увидел главный экран. Служба все еще работает.
  • Я убилсвое приложение, выбравУправление приложениями -> Приложение -> Принудительная остановка. Служба остановлена.

Кажется, что поведение Serviceи Threadодинаково. Итак, почему я должен использовать Serviceвместо Thread? Есть ли что-то, что я упустил? Я думал, что моя Службапродолжит работать даже после того, как я уничтожу свое приложение?

15
задан Community 23 May 2017 в 12:13
поделиться