2012-03-23 2 views
0

서비스를 시작하고 바인딩하는 단일 Activity 응용 프로그램이 있습니다. 활동을 종료 한 후에도 서비스가 계속 실행되기를 원합니다.unbindService 대 stopService

지금은 stopService와 unbindService를하고 있습니다. 내 가정은 바인딩을 해제해야하지만 계속 실행해야한다고 (분명히) stopService를 호출하면 안됩니다. 맞습니까?

장기 실행 서비스를위한 적절한 서비스 관리 기술을 알고 싶습니다.

답변

0

이 하나가 서비스 문서에서 답변을 얻을 수 있습니다 : 중지 된 서비스가 여전히 BIND_AUTO_CREATE 세트와 결합 ServiceConnection 객체가있는 경우, 그것은 이러한 바인딩이 모두 제거 될 때까지 파괴되지 않습니다

. 서비스 수명주기에 대한 자세한 내용은 서비스 설명서를 참조하십시오.

서비스를 정리하려면 바인딩을 해제하는 것이 좋습니다. Context.startService()를 사용하여 다른 인 텐트를 사용하여 언제든지 다시 시작할 수 있습니다. 사용 방법에 따라 잠시 동안 서비스를 시작하고, 몇 가지 작업을 수행하고, 멈추게하고 (이 작업을 수행하기 위해 stopSelf 호출을 사용할 수도 있음), 더 많은 작업이 필요할 때 다시 시작하는 것이 가장 좋습니다. 또는 다른 의도를 얻으십시오.

+0

알아두기. 활동이 끝나면 바인딩 해제 이유를 확인합니다. 하지만 서비스를 중지하지 않으면 서비스가 종료 된 후에도 서비스가 계속 실행됩니다. 맞습니까? – LiteWait

+0

작업을하지 않는다면 문제가되지 않으며 시스템이 자연적으로 죽일 때까지 살 수 있습니다. 이것은 어쨌든 앱 스택에 앉아서 귀하의 활동에 어떤 변화가 있는지와 전혀 다릅니다 ... –

+0

나는 실제로 서비스에서 일하고 있습니다. 나는 홈 버튼 누름을 듣고 GPS 수정을 듣고 있습니다. 내가 그것을 필요로하지 않는다면 나는 그것을 물론 멈출 것이다. "바인딩 해제"중 하나가 서비스에서 활동을 바인딩 해제하지만 stopService가 해당 활동을 종료합니다. 사실 나는 왜 내가 그것에 묶을 필요가 있는지 궁금해하고있다. – LiteWait

관련 문제