2014-01-05 106 views
0

我想知道是否有方法將抽象類綁定到服務?Android綁定抽象類到服務

我有一個服務,打開一個新的線程和通信到一個Node.js Socket.IO服務器。我想創建一個抽象類,它包含對服務,信使和處理程序的綁定,以便可以在多個應用程序中使用它。目的是我可以創建這個抽象類的對象,並且只需要根據服務器發回的任何消息覆蓋所調用的任何函數。

如果需要,我可以製作一個public abstract void bindToService();並在任何使用此類的Activity中重寫它,但我更願意將它作爲Abstract類的私有方法,並在Object初始化時調用它。有沒有辦法做到這一點?

在此先感謝您的幫助......

回答

0

你需要覆蓋的服務onBind()方法,並返回IBinder接口的實現,它可以是Service類本身。然後,您可以從任何Activity調用bindService(),通過ServiceConnection偵聽器界面的實現,該界面將使用IBinder進行回調。您可以使用它與Service進行交互。你可以閱讀更多關於如何實現Service綁定這API docs

+0

我明白一個Activity如何綁定到一個服務,我想知道是否有一種方法將抽象類(不是活動)綁定到服務。這樣,Activity就有一個擴展抽象類的私有類,當一個對象被初始化時,它就被綁定了。 – nathansizemore

+1

@ w3rthl3ss:'服務'只能綁定到應用程序組件。如果你想在另一個類中實現綁定邏輯,那麼你需要將它的引用傳遞給你的'Activity'或'Application'。你可能想要的是一個'ServiceConnection'實現,當'Service'連接或斷開連接時它將自動接收回調,並且可以通過'IBinder'與它交互。 – corsair992

+0

我設法解決了這個問題,通過在類'構造函數中使用'WeakReference'來實現。與您上面的評論類似。 – nathansizemore