2013-02-25 80 views
2

我有一個應用程序,這有一個服務,這運行STICKY如果有工作要做,即使用戶關閉應用程序的服務工作,直到完成她的工作。傳遞ArrayList <T>服務和活動之間

看,我已經按照教程Android Example: Communication between Activity and Service using Messaging和適應我的應用程序,但是當我嘗試發送郵件,這不是我的服務或客戶端接收。

此外,我需要傳遞參數,像一個ArrayList中的工作流程是這樣的

  1. 用戶開始我的應用程序和應用程序更復雜的啓動服務
  2. 用戶在應用程序和應用程序按下一個按鈕發送信號到服務(這可能是一個整數)
  3. 服務獲取來自互聯網,過程數據和這些數據發送到應用程序是否正在運行,如果不是服務通知用戶新的數據
  4. 如果一段時間後沒有從服務器接收服務停止。

問題是如何在服務和應用程序之間傳遞複雜對象?

回答

1

您可以使用setData(android.os.Bundle)傳遞Message中的複雜對象。束需要Parcelable數據,使他們能夠被序列化,但對基本類型的ArrayList(如整數和字符串)爲了方便支持。如果您的列表中包含自定義對象,你就需要讓他們實現Parcelable和使用putParcelableArrayList(String key, ArrayList<? extends Parcelable> value)它們添加到您的包。

如果您的數據相當複雜/結構化,您也可以使用Content Provider進行調查。有一個最初的學習曲線,但供應商非常適用於某些情況下。