2016-01-12 1 views
1

Я сделал сервис 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; 
    } 

Проблема

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

Пожалуйста, помогите мне в прекращении обслуживания.

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

ответ

0

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

+0

Ваша догадка правильная, но этот код на кнопке на startService –

+0

На самом деле позвольте мне рассказать вам небольшую историю, я загружаю изображения в службу. Я хочу запустить службу, когда пользователь нажимает кнопку загрузки изображений, я хочу, чтобы этот процесс запускался на службе, и пользователь может получить статус в указанной области. Он может видеть 3 из 10 загруженных изображений. и, таким образом, после запуска службы, стартовая сервисная кнопка должна измениться в службе останова. –

+0

. Я сделал все, что угодно, и все работает, но когда я нажму кнопку остановки обслуживания, он снова начнет мой сервис. :(после остановки. –

Смежные вопросы