2010-08-21 58 views
0

我剛開始在Android中使用服務,並且我做了一個簡單的服務,每20秒輪詢一次服務器。如何從正在運行的服務中獲取數據

現在我怎樣才能從我的主要活動(當它是活動時)獲得這些數據?

或者服務可以發回它做我的主要活動(但只有當它的活動)。我不想喚醒我的活動。

我已閱讀「綁定」的SDK examples,但我找不到示例如何實際上從服務中獲得某些東西。只是如何啓動和停止綁定。

從示例中。如果我的活動中有「mBoundService」對象,我該如何從名爲eg的服務方法中獲取數據。 「pollingData()」?

回答

3

我的建議是從服務中使用sendBroadcast()發送廣播,然後在您的主要活動中使用BroadcastReceiver作爲內部類。根據您的服務,您可以將數據附加到意圖使用putExtras()getExtras()

希望這有助於!

一個實際的例子:

public class x extends Service { 

//Code for your service goes here 

    public talk() { 
     Intent i = new Intent(); 
     i.putExtras("Extra data name", "Super secret data"); 
     i.setAction("FILTER"); 
     sendBroadcast(i); 
    } 
} 

然後在類的服務交談:

public class y extends Activity { 

    //Code for your activity goes here 

    BroadcastReceiver br = new BroadcastReceiver() { 
     public void onReceive(Intent i) { 
     String str = (String) i.getExtras().get("Extra data name").toString(); 
     } 

    OnResume() { 
     super.OnResume(); 
     IntentFilter filt = new IntentFilter("FILTER"); 
     this.registerReceiver(br, filt); 

     //Do your other stuff 
    } 

    OnPause() { 
     super.OnPause(); 
     unregisterReceiver(br); 
    } 

希望這個例子是關於你正在尋找的東西,讓我知道如果你需要任何更多細節。

+0

謝謝你知道這是否有任何實際的例子嗎? – droidgren 2010-08-21 23:15:30

+0

我剛剛爲你添加了一個!希望能幫助到你。廣播通常被android用來讓其他程序或其他部分發生。傳入的文本消息或傳出的呼叫都會產生廣播。 – 2010-08-22 02:29:08

+0

謝謝,我非常感謝你的幫助。你的例子工作得很好,雖然它是: public void onReceive(Context c,Intent i)然後一個「;」 .toString(); – droidgren 2010-08-22 10:40:13

相關問題