2017-02-14 73 views
0

步驟#1。需要實現接口ServiceConnection實施接口ServiceConnection

public class ServiceBinding<T extends ParentService<T>> implements ServiceConnection { 
    public T bindedService; 

    @Override 
    public void onServiceConnected(ComponentName className, IBinder service) { 
     // Warning: Type safety: Unchecked cast from IBinder to ChatService<T>.LocalBinder 
     bindedService = ((T.LocalBinder) service).getService(); 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName arg0) { 
    } 
} 

步驟#2。然後家長服務將如下:

public abstract class ParentService<T extends ParentService<T>> extends Service { 
    public class LocalBinder extends Binder { 
     public T getService() { 
      return (T) T.this; // Warning: Unchecked cast from ChatService<T> to T 
     } 
    }; 
} 

問:就是這樣一個接受的解決方案?

ServiceConnection該如何正確實施?

回答

0

您可以實現這樣的 -

private ServiceConnection mConnection = new ServiceConnection() { 

    @Override 
    public void onServiceConnected(ComponentName className, IBinder service) { 
     LocalBinder binder = (LocalBinder) service; 
     service = binder.getService(); 
     boundVal = true; 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName arg0) { 
     boundVal = false; 
    } 
}; 

的boundVal是 'unbindservice' 扳機。以連接作爲參數傳遞boundval。

onServiceConnected()onServiceDisconnected()分別在客戶端 - 服務器連接建立或斷開後被調用。在onServiceConnected()方法的情況下,將傳遞一個IBinder對象,其中包含客戶端與服務交互所需的信息。 乾杯!

+0

如何製作一個通用的綁定實現以避免重複代碼的問題。 – DukeSpontaneous