2011-04-16 55 views
0

假設我有一個服務S和活動A. S爲A下載數據(或處理一些長時間運行的工作,不管),但A並不總是存在。當作業隊列爲空時,我不希望S掛起:S應將完成的作品的結果發佈到A的某種類型的郵箱中,因此A可以在郵件再次返回時將其拖出。針對Android上進行的活動的消息隊列解決方案?

這可以在不使用SQLite的文件存儲實現郵箱的情況下實現嗎?我更喜歡一些更快的機制,寫操作在設備上往往很慢。我想過在ApplicationContext中使用一個簡單的靜態列表,但依賴於ApplicationContext的afaik結果是一個有風險的/脆弱的解決方案。

任何人都可以推薦這種問題的模式?

回答

1

這樣做可以在不使用文件存儲SQLite的情況下實現郵箱嗎?

不可靠。要麼它是一個文件,要麼它在A再次返回之前可能被燒燬。請記住,您的流程 - 您的所有靜態數據成員和對象所在的位置 - 並不會永遠存在。一旦S關閉(這是一個好的的東西,謝謝!),歡迎Android終止這個過程,如果你的「郵箱」完全在RAM中,那麼你的「郵箱」會被關閉。

您可以將它保存到磁盤上,但保留單身或其他東西作爲緩存,所以如果A快速返回,您可以跳過一些I/O。或者,如果A的消息存在並不重要,那麼可以將它們保存在RAM中,並且如果流程首先被終止,那麼只是聳聳肩。

相關問題