2013-03-28 53 views
6

本地SQLite數據庫同步我有一個PostgreSQL數據庫這是由通過Web服務的Android應用程序操作。 我想知道什麼是爲我的應用程序創建離線模式的最佳方法。Android應用程序脫機模式下,與遠方的數據庫

我最初的想法是讓一個的SQLite本地數據庫使用時,該裝置具有上網條件

我想知道是否有一個現有的工具,這使得同步更容易與現有的postgres數據庫一旦設備可以訪問網絡

+0

您可以嘗試使用SyncAdapter http://developers.androidcn.com/resources/samples/SampleSyncAdapter/index.html – minhaz

+3

請注意,如果數據在兩個數據庫斷開連接時都可以修改,那麼沒有簡單的解決方案。發生衝突時應該怎麼做才能由應用程序(或用戶)決定。 –

+0

@minhaz我學到了一些關於SyncAdapter的知識,但我不是說它對我想做的事有幫助。 例如我的應用程序可以在離線狀態有些日子,它應該允許用戶工作「正常」使用本地數據,而Web訪問,一旦設備再次訪問互聯網,我需要更新/刪除/創建數據庫在脫機模式下更改的項目 – Simo

回答

4

這裏有一些非常基本的想法。

在理想情況下,你會在一般營運元數據同步和你的離線模式將允許嵌入只工作流程添加基於元數據的新數據。這樣可以很容易地通過稍後發佈到Web服務,然後在數據庫中標記或完全刪除行來稍後同步。

如果你有類似的東西去,你可能真的不希望接近SQLite作爲一個RDBMS。你可能想要的是一個寬泛的表結構,主要用於存儲待處理的請求,或者存儲諸如稍後將發送的json有效內容之類的東西。這意味着您的本地數據庫將不是圍繞您的數據模型設計的,而是圍繞您的Web服務API設計的。

如果你必須進入更新(覆蓋工作流程),那麼你就需要投入大量的精力來解決衝突,但同主要適用。您可能想要添加更多信息,如時間戳和其他衝突解決相關數據。

從那裏,但是你應該能夠重新使用應用程序的API做同步,而不是尋找一個特定的工具來做到這一點。

+0

感謝您的回答,我想知道是否有一個奇蹟般的工具來做到這一點,但現在我幾乎可以肯定,這個「魔術」還不存在。 – Simo

+0

如果你必須做雙向同步,我不確定這個「魔法」是否真的可行。有一些解決衝突的方法,但在所有方面都不可能實現。對於單向同步,這是合理的可能,但我很難看到爲什麼你已經建立的網絡服務不會更好..... –

+0

這個問題的魔力似乎只存在於[Telerik ](http://www.telerik.com/datasync-beta),它只適用於iOS和其網站,它將很快面向Android設備。 – Narayanan

相關問題