본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] bind된 Service 가 죽었을 때, 다시 자동 connect 되는 현상.

by 돼지왕 왕돼지 2012. 5. 9.
반응형


Service 를 만들고 그것에 aidl 로 bind 하는 앱을 만들고 있던 중, 새로운 사실을 알아버렸습니다.  

Service 를 가진 process 가 crash 되거나, process kill 되는 경우, bind 한 process 의 ServiceConnection 의 onServiceDisconnected() 함수가 호출되게 됩니다. 요건 당연해 보이죠?

하지만 여기서 주의할 것은!!!!

이때 해당 ServiceConnection 은 완전 종료된 것이 아니라, crash 되거나 process kill 된 service 가 되살아나는경우 ( 해당 process 만 살아나도 ) 자동으로 onServiceConnected() 불리며 연결이 됩니다.

이 점을 항상 keep in mind 한 상태에서 설계를 해야겠습니다. 

참조 
http://developer.android.com/reference/android/content/ServiceConnection.html#onServiceDisconnected(android.content.ComponentName)

Called when a connection to the Service has been lost. This typically happens when the process hosting the service has crashed or been killed. This does not remove the ServiceConnection itself -- this binding to the service will remain active, and you will receive a call to onServiceConnected(ComponentName, IBinder) when the Service is next running.




반응형

댓글