1

我的活動啓動一個IntentService,然後調用一個遠程API。然後我需要將結果數據傳回Activity(通過BroadcastReceiver)。在應用程序的其餘大部分內部,這些數據都封裝在一個類中,原始成員變量保存着數據。但是當結果通過Intent傳遞時,我的選擇受到限制,因爲我無法跨越邊界傳遞標準Java對象。我正在尋找一種簡潔而整潔的方式來通過Intent傳遞像這樣的對象,而不需要編寫大量的重複代碼。如何從IntentService返回對象?

選項:

  1. 我的類實現Parcelable。單調地執行/維護
  2. 單獨傳遞每個成員變量,並在另一側重建對象。單調乏味地實施/維護
  3. 使用AIDL指定合同。從來沒有做過,不知道這是多麼恰當。
  4. 序列化對象並將字符串傳遞給Activity。通過一個意圖是否存在字符串長度限制?我收集可能有性能問題。

我應該使用哪種方法,爲什麼?

+0

你是否將許多同一類的對象傳遞給活動?你想緩存這些數據嗎? – manno23

+0

它通常是一個對象,並且數據通常不會被緩存。 –

回答

2

此遠程API以某種方式(JSON或XML)序列化數據嗎?你能否在反序列化之前阻止它直到達到活動?

失敗,我會看到序列化作爲最佳選擇。 Parcelable是一種特定類型的序列化,正如你指出的那樣,對於實現有點棘手,但如果你關心性能,應該更高效。但是,除非您處理大量的流量,否則序列化選項不應該太慢。

+0

好的建議,但我有相當數量的現有代碼,我需要做一個相當廣泛的重構和重組來做到這一點,所以我希望有更好的方式 –

+0

公平不夠,答案更新。 –