У меня в настоящее время есть служба, которая работает нормально, когда я ее запускаю, но когда я пытаюсь остановить ее, используя метод stopService, метод onDestroy не вызван.Служба не остановится, когда метод stopService называется
Вот код, я использую, чтобы попытаться остановить службу
stop_Scan_Button = (Button) findViewById (R.id.stopScanButton);
stop_Scan_Button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Log.d("DEBUGSERVICE", "Stop Button pressed");
Intent service = new Intent(CiceroEngine. CICERO_SERVICE);
releaseBind();
Log.d("Stop_Scan_Button", "Service: " + service.toString());
stopService(service);
Log.d("Stop_Scan_Button", "Service should stop! ");
}
});
я прав, полагая, что при использовании StopService он вызывает метод OnDestroy Службы? Когда я нажимаю кнопку остановки сканирования, метод onDestroy()
в моей службе не вызывается.
Есть ли что-нибудь еще, что мне не хватает, что я должен положить, чтобы остановить службу?
EDIT: для добавления onServiceConnected()
вызывается, когда stopService запускается вместо onServiceDisconnected()
, почему это происходит?
EDIT: Чтобы добавить больше информации касается связывания
Я называю bindService в OnCreate() метод, а затем у меня есть метод releaseBind() отвязать службы.
Вот код для этого метода:
public void releaseBind(){
unbindService(this);
}
Так что я полагаю, что развязывание это не моя проблема?
Я редактировал мой первоначальный вопрос, чтобы включить информацию о моем связывании, у меня это связывание, а затем развязывание –
Ummm, что код полностью перепутались и почти наверняка способствуя вашей проблеме. 'bindService()' и 'unbindService()' являются асинхронными и гарантированно терпят неудачу, как вы их используете. К сожалению, я понятия не имею, что вы пытаетесь сделать здесь, поэтому у меня нет хорошего способа советовать вам дальше. – CommonsWare
Его просто интерфейс с двумя кнопками, один для запуска службы и один, чтобы остановить его. Я принял утверждение if из моего метода releaseBind(), оставив только unBindService (это); Это, как представляется, отменяет регистрацию Службы, когда я нажимаю на нее второй раз, когда получаю ошибку «Служба не зарегистрирована». Однако stopService по-прежнему не вызывает вызов метода onDestroy() в моей службе, функции фоновой службы все еще функционируют –