Правильный способ остановить IntentService

Я использую IntentService для загрузки изображений на сервер. Моя проблема в том, что я не знаю, как/когда остановить службу. Когда я вызываю stopself() в onHandleIntent(Intent..), все намерения, ожидающие в очереди IntentService, удаляются. Но я не хочу останавливать службу, потому что я хочу завершить процесс загрузки, даже если мое приложение не запущено.


person malinjir    schedule 20.04.2012    source источник


Ответы (2)


Моя проблема в том, что я не знаю, как/когда остановить службу.

IntentService автоматически останавливается, когда заканчивается onHandleIntent(), если во время работы onHandleIntent() ему не было отправлено больше команд. Следовательно, вы не останавливаете IntentService вручную.

Когда я вызываю stopself() в onHandleIntent(Intent..), все намерения, ожидающие в очереди IntentService, удаляются.

Вот почему вы этого не делаете.

Но я не хочу останавливать службу, потому что я хочу завершить процесс загрузки, даже если мое приложение не запущено.

Затем вы позволяете IntentService остановиться.

person CommonsWare    schedule 20.04.2012
comment
Спасибо, я не знал о том, что IntentService останавливается, когда это делается.:] - person malinjir; 20.04.2012
comment
Еще один неровный угол в Android SDK... вздох. - person markshiz; 20.03.2015
comment
У меня есть эта проблема: предполагается, что задача от 25 секунд до 1 минуты не заканчивается, поэтому моя служба намерений не завершается - stackoverflow.com/questions/39976001/ - person mboy; 08.12.2016

IntentService останавливает себя, когда у него больше нет Intents (заданий) для обработки. Он запускает stopSelf(startId) для каждого Intent (задания). Взгляните на IntentService источник или Extending the Service Class отсюда http://developer.android.com/guide/topics/fundamentals/services.html

person techiServices    schedule 20.04.2012