2014-02-22 151 views
0

所以基本上我需要一個應用程序,可以使互聯網可用或不可用。所以當然我想:SQLite和MySQL後端。但我的問題是:我應該採取什麼方法?與本地數據庫和遠程數據庫的Android項目

  • 專門用於SQLite,並在按鈕上點擊上傳工作到服務器數據庫?
  • 或者喜歡的東西混合:當網絡不可用工作在SQLite的,當互聯網上的MySQL可用的工作(在上傳時,互聯網是離線完成前期工作)?
  • 或者其他方式可能?

我不想浪費時間試用/測試兩種方法。請告訴我那些做這樣的項目的人如何解決這個問題。我很確定這種項目是廣泛遇到的。

而且我怎麼檢查,看看是否互聯網接入(而不是崩潰的應用程序),這樣我就可以在2種工作方式之間進行選擇(離線和在線)?

所有幫助將不勝感激。

+0

我建議你使用SQLite和後端產生更新的數據庫從應用程序下載的一些腳本工作,這可能是easieast辦法(已經完成,在我的一個應用程序的),但很難知道什麼是最適合你的cz我們不知道你的應用程序是如何工作的以及你的數據庫在應用程序中的用途是什麼,如果你能更好地解釋你的應用程序會更容易幫助 – GhostDerfel

+0

因此,android應用程序的目的是收集銷售來自用戶的信息,當然,這些信息應該集中在遠程服務器上。但在某些情況下,有些用戶只使用wifi互聯網,所以他們在輸入報告時一直沒有互聯網。他們需要填寫他們訪問的每個客戶的報告。其中一些在現場有wifi,但有些則沒有。所以我的用戶必須能夠在應用程序中輸入他的數據,而不管他把它放在本地還是放在遠程服務器上。這不是他的擔心。該應用程序必須具有內置的邏輯以實現同步 – user1137313

+0

您是否知道此類應用程序類型或教程的任何演示? – user1137313

回答

0

我想說的sqlite的離線工作,然後當你感覺到一個互聯網連接的同步跟進。 Checking for network是相當平凡的。

ConnectivityManager connMgr = (ConnectivityManager) 
    getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); 
if (networkInfo != null && networkInfo.isConnected()) { 
    // sync data 
} 
+0

因此,這些步驟將是:1.啓動應用程序,2.檢查SQLite數據庫是否存在,然後創建它,3.如果有Internet,則下載用戶表以便能夠驗證用戶,如果沒有Internet ...然後做什麼? – user1137313

0

我做了一個這樣的項目。我的做法是將主要任務記錄在本地數據庫中。我有一個後臺任務完成每個事務並嘗試將其上傳到後端數據庫,並在後端接受它時使用狀態代碼標記每個事務。如果上傳失敗,我使用滑動窗口來重試多久。我會在一秒鐘之內嘗試,然後是兩點四點,等待時間加倍,直到我成功或者我達到了一個小時,此時我無論如何每小時都會再試一次。這對我們很有用,但如果這對你不起作用,你可以設計一些不同的東西。

相關問題