Как остановить привязку службы локальных намерений

Я создал службу Intent и спроектировал ее таким образом, чтобы она имела возможность перезапустить себя, если ее убила ОС, но если она остановлена ​​пользователем, она должна быть остановлена.

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

Что я сделал

Моей единственной целью было получить статус от службы (которая в моем случае является службой намерений) и обновить мои взгляды. Для этого я реализовал обработчик сообщений и начал связывать службу.

Я связываю свою службу таким образом

 //This is my interface to get specific call back in activity
        mReceiver = new DownloadResultReceiver(new Handler());
        mReceiver.setReceiver(ListSuitClass.this);
        serviceIntent = new Intent(DownloadService.ALARM_SERVICE);
        serviceIntent.setClass(ListClass.this, DownloadService.class);
        serviceIntent.putExtra("receiver", mReceiver);
        serviceIntent.putExtra("requestId", 101);
        startService(serviceIntent);

    }
    if (!mIsBound) {
        bindService(serviceIntent, mConnection, BIND_DEBUG_UNBIND);
        mIsBound = true;
    }

Проблема

Я хочу остановить службу с помощью кнопки «Стоп», но она останавливается на некоторое время и начинается снова. Я не знаю, что я делаю не так, И что опять начинается служба.

Пожалуйста, помогите мне остановить службу.

Примечание. Я запускаю свою службу в отдельном процессе.


person Allay Khalil    schedule 12.01.2016    source источник


Ответы (1)


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

person Geeky Singh    schedule 12.01.2016
comment
ваше предположение верно, но этот код находится на кнопке startService - person Allay Khalil; 12.01.2016
comment
Собственно позвольте мне рассказать вам небольшую историю, я загружаю изображения в сервисе. Я хочу запустить службу, когда пользователь нажимает кнопку загрузки изображений, я хочу, чтобы этот процесс запускался в службе, и пользователь мог получить статус в указанной области, он может видеть 3 из 10 загруженных изображений. и, таким образом, после запуска службы кнопка запуска службы должна измениться на кнопку остановки службы - person Allay Khalil; 12.01.2016
comment
Я сделал все, и все работает, но когда я нажимаю кнопку остановки службы, она снова запускает мою службу. :( после остановки. - person Allay Khalil; 12.01.2016