參考如下博客內容:
IxxxxService.Stub.asInterface(IBinder obj) :
這個函數是干啥用呢? 首先當bindService之后,客戶端會得到一個Binder引用,是Binder 喲,不是IxxxxService.Proxy實例,那這樣的話,我們第一個想法是利用Binder引用作為參數實例化出一個 IxxxxService.Proxy。Ok, 但如果服務端和客戶端都是在同一個進程呢,還需要利用IPC嗎?這樣就不需要了,直接將IxxxxService當做普通的對象調用就成了。Google 的同志們他們利用IxxxxService.Stub.asInterface函數對這兩種不同的情況進行了統一,也就是不管你是在同一進程還是不同進 程,那么在拿到Binder引用后,調用IxxxxService.Stub.asInterface(IBinder obj) 即可得到一個IxxxxService 實例,然后你只管調用IxxxxService里的函數就成了。