2015-09-10 64 views
0

我有一個應用程序在資產文件夾中使用數據庫(SQLite),該文件夾被複制到android設備上的data/data ...文件夾中。問題在於數據庫內的數據是每兩個月更新一次的列車時刻表。爲了進一步使問題複雜化,數據以五個壓縮的csv文件聯機。我寫了一個java腳本,用於下載,解壓縮,解析我需要的數據,構建數據庫並填充它。使用更新後的版本替換資產中的舊數據庫

有沒有辦法更新(替換)資產文件夾中的數據庫?在這一點上,一個簡單的刪除android應用程序數據庫將觸發新數據的副本。

真正的問題:

  1. 我可以發表更新的數據庫,將取代一個資產?
  2. 我可以運行java腳本嗎?
  3. 我是否需要在運行android應用程序中的新線程的背景中編寫整個東西?
  4. 只需手動安裝數據庫並將升級文件發佈到新APK中,會更好嗎?

想法?

+0

「是否有方法更新(替換)資產文件夾中的數據庫?」 - 不,除了通過發佈具有更新數據庫的新版本的應用程序在'assets /'中。此外,這不應該是必要的,因爲一旦應用程序第一次安裝並運行,您就將數據庫從資產複製到內部存儲器,因此它就是您正在使用的內部存儲器上的副本,並且需要更換。 – CommonsWare

+0

@ CommonWare ..謝謝你,不知道我是否可以刪除舊的並替換新的資產。我知道它是它使用的內部存儲版本。我在我的數據庫幫助程序中有一個方法可以刪除和重建內部副本。 – bkane56

+0

這聽起來像是你想爲你的應用程序提供服務,它可以在那裏下載最新的火車時刻表。 –

回答

1

好吧,我只是在回答中寫下我的想法,而不是評論。

就像CommonsWare說的那樣,你不能更新assets/dir中的文件。它們是APK的一部分,即它們被編譯到您的應用程序中,以便您可以替換整個應用程序,或者根本不需要。

您有一個JavaScript將帶有火車時刻表信息文件的壓縮CSV文件轉換爲您的應用程序可以使用的數據庫。我假設這是你放入資產/然後建立你的應用程序的這個數據庫文件。

由於您的應用需要每隔一段時間刷新一次數據,因此讓您的應用下載它似乎最明顯。下載的東西應該是準備使用的數據庫,而不是一組壓縮的csv文件。

您可以將壓縮後的csv文件轉換爲您的開發pc上的數據庫,然後將該數據庫文件放入應用程序可以下載的位置。

爲您的應用程序提供的服務可能非常簡單。它只是一個靜態文件服務器,它不需要是一個API後端。如果您租用服務器,那麼Nginx,Apache或IIS可以爲您提供開箱即用的功能。如果將數據庫文件放在Github或Dropbox上,您甚至可以在不租用服務器的情況下執行此操作。

當您的應用程序啓動時,它會檢查數據庫文件是否有比當前版本更新的版本,如果是,則下載它。完全下載後,它可以運行現在用於從資產/數據/數據進行復制的相同代碼,但它可以從下載的任何地方進行復制。

+0

@羅布..謝謝。那是我需要的信息。我現在可以使用我的gitHub,至少可以讓它起作用併爲我運作。對不起,如果問題是一個簡單的問題,但我只做約6個月的Java和6周的Android。 – bkane56

相關問題