幾件事情要添加到卡萊布的回答是:
的ContentProvider:
Android有實際上許多方法來共享數據。 ContentProvider是在應用程序之間共享數據庫的一種方式。假設您的手機上有3個電子郵件客戶端,可以在您離線時從雲端緩存數據。這是有道理的,你只維護你的電子郵件的一個離線數據庫。如果您有地址簿,短信數據庫或推特數據庫,也是如此。如果你想更新所有的數據,情況也是如此。您只需要真正希望從雲端更新一次數據,而不是每次都更新三次,這會讓我看到下一個主題SyncAdapter。
SyncAdapter:
一個SyncManager是足夠聰明,做所有的同步請求一氣呵成,儘量減少天線供電時間,從而節省電池使用。此外,在AccountManager的幫助下,手機用戶可以自己重寫同步偏好設置,但只有開發人員首先選擇使用SyncAdapter時纔是如此。
此外,SyncAdapter只能與ContentProvider一起使用。因此,即使您不想與其他應用程序共享數據,如果您想使用SyncAdapter,也必須使用內容提供商。 ContentProviders對於初學者(甚至是中級開發者)來說很難實現。我建議你暫時遠離他們。你應該使用ContentProvider,如果已經有一個你想要做的,但我不建議你嘗試創建自己的。
裝載機:
裝載機都不錯。學習如果要顯示來自本地數據庫(或來自ContentProvider)的數據,請使用它們。他們會節省你的時間。與SyncAdapter不同,加載器不需要ContentProvider就可以工作。他們可以直接訪問SQLite。
服務:
瞭解如何使用它們。對他們有太多的話要說。重要的一點是,你應該通過使用像AlarmManager或BroadcastReceivers這樣的組件來最小化他們的活躍時間。此外,您需要了解Service和IntentService之間的區別。
的AsyncTask:
的AsyncTask是很經常需要在Android中,以避免阻塞主UI線程。不要以爲你使用的是AsyncTask,你可以放棄使用服務。
請注意,很多Android教程只給你展示一個概念的最小代碼量,所以它們通常會跳過適當的線程。請注意,如果您願意,您可以手動啓動自己的線程,但AsyncTask爲您做了其他事情,使其成爲許多UI線程被阻塞並且出現「應用程序無響應」錯誤的情況下的理想選擇。
庫:
有許多很好的圖書館在那裏。我不會說哪些是好的。學會使用每個人都推薦的。這些庫可以爲你做很多事情(假設你足夠好,可以讓它們工作)。有一點學習曲線,但它是值得的。而且他們在更高的抽象層次上處理Android,所以通常,線程和其他許多事情通常都會照顧你。
還有很多其他的東西,我沒有提到,或者我沒有提到,但就像我說的,我認爲你的問題太廣泛了。如果您確實需要更多詳細信息,則應該查看一些開發人員指南並觀看Google提供的一些YouTube視頻。
你的問題太廣泛了。請通過指定要實現的實際用例來縮小範圍。 –
謝謝你的回覆@StephanBranczyk。我只是想清楚一下,在什麼情況下,最好的方法是什麼。假設一個應用程序顯示天氣預報,我也可以使用aynctask打天氣api或服務。爲了緩存目的,我可以使用sqlite或者volley等庫。以及查詢和其他所有目的的內容提供商。 aysnc加載數據並監聽數據源的加載程序將其更改爲綁定數據。我只是好奇,如何將所有這些東西封裝成一個更好的解決方案。對不起,我對此感到困惑。 – Ritesh
這裏是信息圖表,可能會幫助你更好地理解:)第三個選項是服務:https://raw.githubusercontent.com/stepnenessolas/robospice/master/gfx/RoboSpice-InfoGraphics.png – Kalem