我有一個相當棘手的情況,我試圖確定最好的設計。基本的是這樣的:IntentService android下載並返回文件到活動
- 我正在設計一個類似郵件接口的郵件系統。
- 當用戶點擊具有附件的郵件,活動被衍生,顯示該消息的用曲別針信令,有一個附加的附接沿着文本。
- 此時,我開始預加載附件,以便當用戶點擊它時 - 加載速度更快。
- 目前,當用戶點擊該附件,其與裝載對話框提示直到下載完成,在該點它加載一個單獨的附件查看器的活性,使BMP字節數組英寸
- 我永遠不想將附件保存到持久性存儲。
我的困難是支持旋轉以及主頁按下按鈕等。下載目前使用線程和處理程序設置完成。
取而代之的是,我想的流動是下述:
- 用戶如之前加載消息,附件的預加載開始之前(不可見的用戶)。
- 當用戶單擊附件鏈接時,附件查看器活動即刻生成。
- 如果下載完成,將顯示圖像。如果沒有,則會在THIS活動中顯示一個對話框,直到完成並顯示爲止。請注意,理想情況下,下載從不重新啓動,否則我浪費了預加載週期。
顯然我需要一些持續下載過程,並能夠回調到任意綁定的活動。看起來IntentService幾乎符合我的需求,因爲它在後臺線程中工作,並且具有Service(非UI)生命週期。但是,是否可以滿足我的其他需求?
我注意到我想要做的通用實現從調用者Activity獲取一個Messenger,以便Message對象可以發送回調用者線程中的Handler。這一切都很好,但在我的情況下,當調用者Activity停止或銷燬並且當前活動的Activity(附件查看器)正在顯示時會發生什麼? 有沒有一種方法可以將新的Activity動態綁定到正在運行的IntentService,以便我可以將消息發送回新的Activity?
另一個問題是消息對象上。我可以在這個包裏寄回任意大的數據嗎?例如,我不需要發回「文件已下載」,我需要發回已下載文件本身的字節數組,因爲我從不想將其寫入磁盤(並且是的,這需要是這種情況)。
上實現我想要的行爲任何意見是極大的讚賞。我不長的工作與Android對於我常常感到困惑着如何在活動週期的過程中最好地處理異步進程特別是當它涉及到方向變化和home鍵按下...
聽起來不錯,但是您對於全局可訪問的緩存有什麼想法?我認爲唯一能夠達到這個目的的是Application對象,但我確定這不是存儲此類事物的好地方。也許你的意思是我不瞭解的更低層次的東西? –
我也加了一些編輯來解決緩存問題。 –
偉大的寫作。非常感謝。 –