2016-07-31 3 views
0

백그라운드에서 데이터를 가져 오기 위해 백그라운드 서비스를 사용합니다. 서비스를 시작합니다.액티비티와 바인더 서비스

bindService(intent, mConnection, Context.BIND_AUTO_CREATE); 

mConnection은 ServiceConnection의 인스턴스입니다.

서비스 중 일부 데이터를 계속 가져 와서 유효성 검사를 통과하면 사운드가 재생됩니다. 이렇게되면 사용자가 활동 화면에서 STOP 버튼을 누를 수 있습니다.이 작업은 바인딩 해제 (mConnection)를 호출하여 내가 소리를 멈추게하는 서비스. 내 쿼리는 서비스가 백그라운드에서 실행되는 동안 안드로이드가 활동을 죽인 다음 사용자가 서비스를 중단 할 수있는 방법을 설명합니다. 서비스를 바인딩 해제하려면 mConnection이 필요하고 onSaveInstanceState에는 번들로 mConnection을 저장할 수 없습니다.

+0

경계 서비스가 아닌 IntentService와 브로드 캐스트 수신기 (startService 호출)를 사용하는 것이 더 낫지 않습니까? 많은 다른 작업이 아니라 특정 백그라운드 작업 일뿐입니다. –

+0

안녕하세요, 사용자가 배경 서비스를 중단하고 싶을 때 STOP 버튼으로 할 수 있도록 활동 UI를 유지하고 싶습니다. 일단 시작된 IntentService는 사용자가 제어 할 수 없습니다. – Mandroid

+0

서비스에서 Executor/Threadpool/Runnable /을 사용하지 마십시오. Executor에서 shutdownNow()에 명령을 보내 제어 할 수 있습니다. 그러면 서비스가 활동 수명주기에 바인딩되어 유지 관리 할 수 ​​있습니다. 서비스에서 실행중인 스레드 제어. –

답변

1

bindService (...) 메소드를 사용하여 서비스를 시작한 경우 시스템에서 활동이 종료되면 서비스도 종료됩니다. 라이프 사이클은 활동에 묶여 있습니다. BTW는 프로세스뿐만 아니라 활동을 죽일 것입니다. startService() 및 START_STICKY를 사용하여 서비스를 시작할 때와 다릅니다.

귀하의 경우에는 걱정할 필요가 없습니다. 활동이 중지되는 한 귀하의 서비스도 중단됩니다.

+0

내 목표는 부모 활동이 Android에 의해 종료 된 경우에도 활동이 계속 유지되며 사용자가 활동을 다시 방문하면 이전과 동일한 UI 상태로 복원된다는 것입니다. 그것은 가능합니까? – Mandroid