編寫:jdneo - 原文:http://developer.android.com/training/sync-adapters/index.html
如果我們的應用允許 Android 設備和網(wǎng)絡服務器之間進行數(shù)據(jù)同步,那么它無疑將變得更加實用,更加吸引用戶的注意。例如,將數(shù)據(jù)傳輸?shù)椒掌骺梢詫崿F(xiàn)數(shù)據(jù)的備份,另一方面,從服務器獲取數(shù)據(jù)可以讓用戶隨時隨地都能使用我們的應用。有時候,用戶可能會覺得在線編輯他們的數(shù)據(jù)并將其發(fā)送到設備上,會是一件很方便的事情;或者他們有時會希望將收集到的數(shù)據(jù)上傳到一個統(tǒng)一的存儲區(qū)域中。
盡管我們可以設計一套自己的系統(tǒng)來實現(xiàn)應用中的數(shù)據(jù)傳輸,但我們也可以考慮一下使用 Android 的同步適配器框架(Android's Sync Adapter Framework)。該框架可以用來幫助管理數(shù)據(jù),自動傳輸數(shù)據(jù),以及協(xié)調不同應用間的同步問題。當使用這個框架時,我們可以利用它的一些特性,而這些特性可能是我們自己設計的傳輸方案中所沒有的:
插件架構(Plug-in Architecture):
允許我們以可調用組件的形式,將傳輸代碼添加到系統(tǒng)中。
自動執(zhí)行(Automated Execution):
允許我們基于不同的準則自動地執(zhí)行數(shù)據(jù)傳輸,比如:當數(shù)據(jù)變更時,或者每隔固定一段時間,亦或者每天,來自動執(zhí)行一次數(shù)據(jù)傳輸。另外,系統(tǒng)會自動把當前無法執(zhí)行的傳輸添加到一個隊列中,并且在合適的時候運行它們。
自動網(wǎng)絡監(jiān)測(Automated Network Checking):
系統(tǒng)只在有網(wǎng)絡連接的時候才會運行數(shù)據(jù)傳輸。
提升電池使用效率:
允許我們將所有的數(shù)據(jù)傳輸任務統(tǒng)一地進行一次性批量傳輸,這樣的話多個數(shù)據(jù)傳輸任務會在同一段時間內運行。我們應用的數(shù)據(jù)傳輸任務也會和其它應用的傳輸任務相結合,并一起傳輸。這樣做可以減少系統(tǒng)連接網(wǎng)絡的次數(shù),進而減少電量的使用。
賬戶管理和授權:
如果我們的應用需要用戶登錄授權,那么我們可以將賬戶管理和授權的功能集成到數(shù)據(jù)傳輸組件中。
本系列課程將展示如何創(chuàng)建一個 Sync Adapter,如何創(chuàng)建一個綁定了 Sync Adapter 的服務(Service),如何提供其它組件來幫助我們將 Sync Adapter 集成到框架中,以及如何通過不同的方法來運行 Sync Adapter。
Note:Sync Adapter 是異步執(zhí)行的,它可以定期且有效地傳輸數(shù)據(jù),但在實時性上一般難以滿足要求。如果我們想要實時地傳輸數(shù)據(jù),那么應該在 AsyncTask 或 IntentService 中完成這一任務。
學習如何在我們的應用中添加一個 Sync Adapter 框架需要的賬戶處理組件。這節(jié)課將展示如何簡單地創(chuàng)建一個 Stub Authenticator 組件。
創(chuàng)建 Stub Content Provider
學習如何在我們的應用中添加一個 Sync Adapter 框架需要的 Content Provider 組件。在這節(jié)課中,假設我們的應用實際上不需要使用 Content Provider,所以它將教我們如何添加一個 Stub 組件。如果我們的應用已經(jīng)有了一個 Content Provider 組件,那么可以跳過這節(jié)課。
學習如何將我們的數(shù)據(jù)傳輸代碼封裝到組件當中,并讓其可以被 Sync Adapter 框架自動執(zhí)行。
學習如何使用 Sync Adapter 框架激活并調度數(shù)據(jù)傳輸。