2016-04-26 208 views
-2

我具有延伸應用如何從Android服務獲取數據?

public class MyApp extends Application 
{ 
    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 
     Intent intent = new Intent(this, MyService.class); 
     startService(intent); 
     Log.i("Try","App ID = " + intent.getStringExtra("MyID")); 
    } 
} 

我也有產生的ID的服務的一個類。

public class MyService extends Service 
{ 
    public void onStartCommand(Intent intent, int flags, int startId) 
    { 
     intent.putExtra("MyID", getID); 
    } 

    public String getID() 
    { 
     //code to generate ID 
     return ID; 
    } 
} 

我的問題是我需要將MyService中的ID傳遞給MyApp,但日誌狀態爲「App ID = null」。

回答

0

你有兩個選擇:

  1. 綁定到服務,並通過調用mService.getID()讓你的ID(參見:http://developer.android.com/guide/components/bound-services.html瞭解綁定服務);

  2. 從您的服務發送一個本地廣播通過生成的ID在意圖額外。將廣播接收器註冊到您想要接收廣播的任何地方(請參閱示例代碼:how to use LocalBroadcastManager?)。

+0

你能給我一個基於上面代碼的例子嗎? –

+0

我需要我的服務無限期地在後臺運行,但是developer.android聲明綁定服務不會。 –

+0

我認爲,對於您的情況,第二種方法更好,因爲ID生成可能需要一些時間,並且在啓動服務後您將無法獲得正確的值。 –

0

有很多選擇:

  • 使用服務對象本身(如單身)。
  • 使用AIDL。
  • 使用Intents。
  • BroadCast接收器
+0

你能給我一個基於上面代碼的意圖示例嗎? –