2011-09-02 69 views
4

對不起,再次讓你煩惱,但我仍然無法找到一種方法,使從我活動的服務的回調...如何使從服務回調到活動

發現了類似的問題 - How to Define Callbacks in Android?

// The callback interface 
interface MyCallback { 
    void callbackCall(); 
} 

// The class that takes the callback 
class Worker { 
    MyCallback callback; 

    void onEvent() { 
     callback.callbackCall(); 
    } 
} 

// Option 1: 

class Callback implements MyCallback { 
    void callback() { 
     // callback code goes here 
    } 
} 

worker.callback = new Callback(); 

還不知道如何將該示例集成到我的項目中。

任何建議或指向明確的教程將是偉大的!

+0

如何將服務綁定到您的活動並僅調用其方法,以便您不需要Observer模式。 – lstipakov

+0

只是請,我該如何綁定它才能夠調用該方法? – Roger

+0

http://developer.android.com/reference/android/app/Service.html#LocalServiceSample下面有客戶端代碼的例子,你可能會把你的活動 – lstipakov

回答

8

您在示例中顯示的那種回調(觀察者模式)在服務和活動之間不起作用。使用觀察者模式,當從A類,你創建類B的實例,並且想要發送回調從B到A.

關於服務和活動,事情是完全不同的。 AFAICT,如果您想從Service回撥您的Activity,實現此目的的最佳方法是使用ResultReceiver。有很多有趣的東西約ResultReceiver

  • 它的構造函數接收一個Handler,這將允許您從服務更改UI(您必須在活動中創建)。
  • 它實施Parcelable,因此您可以將您的ResultReceiver的參考文件放入Intent用於啓動服務的附加項中。
  • onReceive方法有一個結果代碼整數,它允許您生成不同類型的回調(這就好像您的回調接口有很多方法)。此外,它還會收到一個Bundle,您可以使用它來放置所有結果數據。

在另一方面,如果你想要做一個回調(不知道這是在這種情況下,正確的說法),從你的ActivityService,我想你將不得不發送廣播消息或類似的東西。

+1

很好,謝謝!如果可能的話,也許短片段會很棒。 :) – Roger

+1

我現在懷疑。你想回調Acitivity或服務? – Cristian

+0

我想回撥一項活動的服務。 – Roger