2011-11-10 49 views
3

有誰知道Android中的服務開銷有多大。
如果有任何其他的觀點幫助我做出以下設計決定。Android中的服務開銷(我應該創建多少)

我有兩個SQLite的DBS,一個存儲的實際數據(基本上只讀產品庫存),其他的存儲設置,選擇的項目列表等

現在,我創建了一個服務才能manageing這些數據庫的護理,主要有兩個原因:

  • 我希望能夠「節省近」(設置),這是可能的的onDestroy
  • 這需要一些時間來加載數據,因此可以快速關閉該應用程序將數據保存在內存中

從設計的角度來看,我既可以:

  • 創建一個服務同時處理數據塊
  • 創建兩個服務,每處理一個DB

感覺清潔創建一個單獨的服務對於每個DB,例如擴展一個通用的基類來處理關機,定時器等等。它還允許我獨立地配置它們(現在不需要)。另一方面,我不想開始沿着這條路走下去,然後當我習慣於在「服務」中做這樣的事情時,發現有3或5個服務的限制。

那麼, 5個運行的服務,而一個服務託管5個不同的功能?有任何想法嗎?

回答

1

Android有效支持的服務數量在您的情況下無需擔心。在某些任務管理器中看到了正在運行的服務列表,我傾向於指出在大多數設備上高達約100個「正在運行」的服務應該沒有問題。

但是,我不確定你想要做什麼應該在服務中實現。你能詳細說明你爲什麼認爲你需要服務嗎?

我希望能夠「節省近」(設置),這是可能的的onDestroy

不能這樣做在你的正常活動生命週期回調?

這需要一些時間來加載數據,因此應用程序的快速附近的「快速關閉」保存在內存

你是什麼意思的數據?您是否試圖爲DB數據創建某種緩存

+0

感謝您的反饋。關於A - 否,我不想保存在每個活動開關上。只有在「applicationExit」上,並且ApplicationClass中沒有這樣的內容(onTerminate只適用於模擬器)。 –

+0

關於B,它使用服務的一個很好的副作用。即使應用程序被殺死,服務也可以持久保留這些對象(並且在例如30分鐘不使用後終止) - 但是不用擔心,我的主要動機是A - 在退出時保存,而不是頁面切換。 –

+0

好的,在這種情況下,在我看來,服務可能是可靠地通知應用程序死亡的唯一可行方式。 (我沒有看到atm爲什麼Android沒有提供相應的回調函數;儘管不打算進一步調查)。您可能想要*綁定*服務,以便在(最後一次)綁定後服務將被隱式銷燬客戶端消失。 - 我剛剛發現[this](http://stackoverflow.com/questions/7236782/is-an-android-service-guaranteed-to-call-ondestroy)關於* onDestroy()*的服務...似乎它不太容易做到你想要的。 – JimmyB

0

如果服務是RemoteServices,那麼它們將在一個單獨的進程中啓動,這會增加開銷並佔用大量內存。

嘗試在兩種情況下使用單個服務。

相關問題