2013-08-28 64 views
0

我有一個主要活動,很高興與我創建了一段時間的服務工作。最近我不得不添加一個DialogFragment到我的應用程序,雖然它的工作也很好,但我現在需要調用我的服務並傳遞比通常的Intent類型字符串更多的內容。基本上我需要將一系列位圖傳遞給服務,我認爲嘗試將它們填入Intent是不合理的。Android:如何訪問/與另一個片段共享活動綁定服務?

所以我希望,沒有運氣到目前爲止,我可以綁定到服務,而DialogFragement是開放的,所以我可以直接調用服務的方法。

有沒有辦法做到這一點?所以我必須複製整個ServiceConnection類並從onStart()綁定到它?我認爲必須有一個不那麼混亂的方式來做到這一點。

在此先感謝。

回答

1

由於沒有代碼,我們假設您的DialogFragment用於捕獲用戶的某種輸入(是/否或類似),如大多數對話框所做的那樣。如果是這種情況,那麼您可以簡單地將輸入返回到呼叫Activity,並根據此輸入呼叫Service。另一個問題是從哪裏來的Bitmaps從哪裏來?將BitmapsActivityService的陣列傳遞給Service似乎對我來說不是一個好決定,因此您應該考慮將Bitmap檢索邏輯移動到Service本身,無論Bitmaps是來自網絡還是來自資源。

我的回答大部分都是基於對應用程序設計的假設,所以如果這些假設出錯,您可以發佈一些代碼或添加更廣泛的應用程序描述,我很樂意回顧我的答案。

+0

我正在使用具有「保存」和「取消」按鈕的DialogFragment。有一個攝像頭按鈕啓動內置攝像頭,DialogFragment實現onActivityResult()。 DialogFragment的佈局允許多個「附件」圖像。試圖將位圖映射到服務的「保存」按鈕操作。現在我決定將圖像保存到磁盤(這只是我的用例所必需的,不是因爲我想保存它們),所以我可以發送包含圖像文件名/路徑的Intent。您會收到支票,建議您將檢索項目移至服務中。 – garlicman

+0

@garlicman,很高興答案是有幫助的。 – Egor

+0

雅和SD卡的做法其實很好。通過Intent傳遞路徑/文件避免了必須複製它(Base64編碼,然後通過Intent框架傳遞它),這就是爲什麼我想最初綁定到服務並進行直接方法調用的原因。 – garlicman

相關問題