2014-01-07 50 views
0

我很好奇在應用程序中存儲數據的最佳方式,以便通過應用程序內部的更新和可讀性進行存儲。在移動應用程序中存儲數據的最佳方式

基本上我有一個遊戲我正在建設,它有層次,我需要檢查用戶是否已經完成關卡,如果他們有,那麼它可以解鎖下一個關卡,如果沒有,離開下一個關卡。

所以我需要在手機上存儲一個文件,我可以參考回去看看這個關卡是否被打過。

我已經做了一些研究,發現我可以使用Shared Preferences,Internal Data Storage或External Data Storage。我傾向於外部數據存儲,直到有朋友指出人們經常擦拭他們的SD卡以放置新的音樂,視頻和圖片。但是,如果我使用內部數據存儲,那麼當我使用新功能和級別更新應用程序時,數據會丟失?共享偏好是否是最好的選擇?

請您給我一些建議,說明存儲數據的最佳方式是什麼,以便在稍後的階段最容易閱讀,我該怎麼做?我會存儲一個關卡的節拍列表,然後交叉檢查該列表的級別?

在此先感謝

+0

你從哪裏閱讀「更新應用程序時數據丟失」?我從來沒有聽說過(真正好奇,不是雞巴)。 –

+0

多少數據,項目和字節? – zaph

回答

0

在我的遊戲我節省存儲在內部數據存儲的XML信息,所以數據會丟失,只有當用戶卸載應用程序或選擇「清除數據」,但在我的情況下,我有很多信息要保存,如星星,積分和一些獎勵信息,如果你只需要保存級別,我認爲SharedPreferences是最好的選擇...
最後一個資源是保存這個在web服務中的信息,但我不認爲這是事實。

1

我會推薦在iOS上使用CoreData或SQLite來存儲應用程序的數據。因爲XML每次加載時都需要進行解析,因此XML的使用起來非常麻煩,因此它不是非常優化的。在iOS上,我們有NSUserDefaults,它提供存儲功能,但建議存儲更少量的數據。

+0

使用sqlite將使應用程序在Android和iOS世界之間更加便攜。我同意使用XML很麻煩。學習使用SQL也是一項很好的技能。 –

1

如果您使用內部數據存儲或共享首選項,則不會在應用程序更新(甚至OS更新)上擦除數據。只有在用戶卸載應用程序,「清除數據」或擦除整個設備時纔會被抹去。共享首選項實際上是應用程序內部數據存儲位置內的文件,由操作系統管理(並且沒有其他應用程序可以訪問它)。

這聽起來像是你的用例,共享首選項是要走的路。這正是他們的目標。至於如何構建您存儲的鍵/值,完全取決於您的應用程序......我會說可能有像「passed_level_1」等鍵。不幸的是,共享首選項不支持數組(不是鍵,也不是爲值)。

另外請記住,在有根的設備上,用戶可以訪問該數據(即使它不是純文本格式)。所以如果這是一個安全問題,考慮使用加密或其他類型的安全存儲。使用外部存儲也有這個問題,更爲重要的是,因爲所有用戶都可以訪問它,而不僅僅是根植用戶。

+0

哦,好吧,我的印象是這樣的(就像在Thenewboston的youtube android開發系列中說的那樣,當你更新應用程序時,使用內部數據存儲將會丟失內容) – VaMoose

+0

我從來沒有聽說過。一個新版本的應用程序,只要新版本與舊版本具有相同的簽名(否則Android不會讓用戶升級,他們必須先卸載舊版本,這將刪除內部應用程序數據和偏好)但是,在正常情況下,沒有任何東西丟失。 –

相關問題