2012-07-25 101 views
0

能否有人爲我解釋一下爲什麼叫unbindService後,我仍然能夠與服務進行通信?AIDL,Android和取消綁定服務

流程:

bindService(new Intent(IService.class.getName()), conn, Context.BIND_AUTO_CREATE) 
... 
mService = IService.Stub.asInterface(service); 
... 
writeToOutput("Droping bombs from: " + mService.getPid()); 
... 
unbindService(mCurConnection); 
... 
writeToOutput("Droping bombs from: " + mService.getPid()); // no exception - still returns good values 
... 

回答

1

也許該服務仍在工作的任務。

在它指出調用unbindService(連接)簡單地允許服務在任何時候停止了谷歌文檔。它並沒有提到這是一個難以制止的停止或停止。

從谷歌文檔: 「從應用服務斷開作爲服務重新啓動,現在的服務被允許在任何時候停止您將不再接聽電話。」

另一種可能性是,你可能有其他活動結合到服務等只要你有至少一個綁定的接口服務保持活動狀態。

如果你想發佈更多關於你在做什麼的細節,我可以提供更好的解決方案。

謝謝

+0

我想從ApiDemos複製RemoteService。問題是我不想結束服務,但關閉用戶的連接。我知道有其他方法可以做到這一點,但我只是想知道爲什麼它仍然允許通信我已經告訴結束連接後。 – LazyBones 2012-07-25 14:37:42

+0

它可能仍然是工作的任務,因此允許通信。作爲該服務的客戶端,您應該讓代碼的結構化方式使得在調用斷開連接之後,在顯式連接或重新連接之前,不再與服務進行通信。 – Birdnado 2014-11-17 19:31:07