欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

【Android游戲開發十二】(保存游戲數據 [上文]

系統 1913 0


Himi 原創, 歡迎轉載,轉載請在明顯處注明! 謝謝。

原文地址: http://blog.csdn.net/xiaominghimi/archive/2011/01/02/6113019.aspx

對于游戲中的數據進行保存方式,在Android中常用的有四種保存方式,這里我先給大家統一先簡單的介紹下:

1. SharedPreference

此保存方式試用于簡單數據的保存,文如其名屬于配置性質的保存,不適合數據比較大的保存方式;

2. 文件存儲 (FIleInputStream/FileOutputStream)

此保存方式比較適合游戲的保存和使用,可以保存較大的數據,因為相對于SQLite來說更容易讓童鞋們接受,此方式不僅能把數據存儲在系統中也能將數據保存到SDcard中;

3.SQLite

此保存方式比較適合游戲的保存和使用,可以保存較大的數據,并且可以將自己的數據存儲到文件系統或者數據庫當中,也可以將自己的數據存儲到SQLite數據庫當中,也能將數據保存到SDcard中;

4.ContentProvider (不推薦用于游戲保存 )

此保存方式不推薦用于游戲保存,因為此方式不僅能存儲較大數據,還支持多個程序之間就的數據進行交換?。?! 但是由于游戲中基本就不可能去訪問外部應用的數據,所以對于此方式我不予講解, 有興趣的可以去自行百度 google 學習;

以上簡單的對幾種常用的保存方式進行的概述,那么,下面會詳細的去分析每個的優缺點以及每種保存的實現和需要注意的地方!

下面我首先向大家介紹第一種保存方式:

保存方式之: 《SharedPreference》


優點: 簡單、方便、適合簡單數據的快速保存

缺點:1.存數的文件只能在同一包內使用,不能在不同包之間使用!

2.默認將數據存放在系統路徑下 /data/data/com.himi/ ,沒有找到放SD卡上的方法。

總結:其實本保存方式如同它的名字一樣是個配置保存,雖然方便,但只適合存儲比較簡單的數據!

main.xml :

先把xml文件放上來的原因是因為我在此篇中介紹的SharedPreference 和文件存儲 (FIleInputStream/FileOutputStream),都共用此xml,很簡單,兩個textview 兩個 editview 以及兩個button,這里就不多說了;

下面是SharedPreference 的代碼實現和詳細講解:

代碼中的注釋的很清楚了,比較簡單,不多說了。


保存方式之:《文件存儲 OutputStream/InputStream》

優點: 1.適合游戲存儲,能存儲較大數據;

2.不僅能存儲到系統中,也能存儲到SD卡中!

總結:如果童鞋們對SQL不太熟習的話那么選擇此種方式最為合適的啦、嘿嘿

以上代碼中實現了兩種流形式來完成寫入和讀入,這里我們為什么要使用Data流來包裝,其實不光是獲得更多的操作方式,最主要的是方便快捷,你比如用file來讀入的時候,明顯的復雜了一些不說,它還一次性把所有數據都取出來了,不便于對數據的處理!

強調的有幾點:

1: 在一開始對數據的訪問再次提醒童鞋們,這個跟sharedPreference的獲取方式不一樣,sharedPreference 的獲取方式可以得到一個默認的值,但是你用咱們獲取的是個文件 而且直接就去open這個文件,一旦不存在必定異常,所以這一塊的異常處理,以及finally的處理一定要處理得當。

2.其實在一開始用data包裝的時候發現寫入的字符串在讀入的時候發現字符亂碼了,查了api才發現,api規定當寫入字符串的時候必須寫入UTF-8格式的編碼,但是后來不知道怎么了就沒事了。 - -、所以這里如果童鞋們遇到此問題,我給出大家一個解決方法,就是在寫入的時候我們不要去DataOutputStream 來包裝而是用,OutputStreamWriter ,因為在構造的可以設定編碼!

OutputStreamWriter osw = new OutputStreamWriter(fis,"UTF-8");

Stringcontent = EncodingUtils.getString(buffer, "UTF-8" ); 這個也能把字符數組轉碼制!

這樣寫入的就肯定是UTF-8編碼的字符啦、

下面介紹如何把我們的數據通過 OutputStream/InputStream 存入SD卡中!

其實將我們的數據放入SD卡中,無疑就需要對代碼進行兩處的修改:

注意:一定要有SD卡!對于如何創建SD卡在前一篇文章中已經說了兩種方式,不會的童鞋可以去看下;

第一:檢查是否裝有SD卡;

第二: 修改讀入的地方 ( 備注1 )

fis = this.openFileInput("save.himi"); //這里沒有路徑,路徑是默認的 data-data-com.himi-files下

替換成我們的SD卡的路徑就可以了:

File path = new File("/sdcard/himi/save.himi");//這里新建一個File目錄路徑

fis = new FileInputStream(path);傳入路徑

第三 : 修改寫入的地方 ( 備注2)

fos = this.openFileOutput("save.himi", MODE_PRIVATE);這里也是默認路徑,需要對其修改,

注意:這里修改了,那么在finally中的判定大家也要對應的適當修改;

注意:如果是系統路徑,當沒有此文件的時候,android 會默認創建一個!但是我們放入SD卡的時候要自己創建目錄路徑和文件!


第四: 因為我們要在SD卡中進行寫入的操作,所以要在配置文件中聲明權限!

AndroidMainfest.xml

這一句就是啦~

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

為了讓大家看到所放的位置,所以把整個xml放出來供參考;

那么當創建路徑和文件的時候,我們對其檢查SD卡中是否已經存在exists()方法 ,如果已經存在就不去創建,這樣避免下次再次寫入數據的時候又新建了文件和路徑、

其實我們在可以在啟動程序的時候判斷如果沒有此文件,我們可以直接緊接著創建一個文件,這些都屬于優化上的了,我主要是讓大家引入,學會,那么其他的簡化啦,優化啦,其他方式去實現啦都留給各位同學自己了、


OK、今天就先介紹到這里,后面會單獨剖析SQLite如何存入數據,以及對數據操作的! 希望大家繼續關注!

(推薦大家訂閱本博客,因為咱的更新速度可是很快的~娃哈哈)

本篇源碼: http://download.csdn.net/source/2959100

新的一年了小明祝福大家新的一年里,事業順利,身體健康,全家幸福美滿!

上張本項目的截圖:

【Android游戲開發十二】(保存游戲數據 [上文])詳解SharedPreference 與 FIleInputStream/FileOutputStream將數據存儲到SD卡中!


【Android游戲開發十二】(保存游戲數據 [上文])詳解SharedPreference 與 FIleInputStream/FileOutputStream將數據存儲到SD卡中!


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!?。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产污网站在线观看 | 看全色黄大色黄大片爽一次 | 日本黄色片一级片 | jzz 护士| 夜色视频网 | 免费黄色大全 | 在线播放一区二区三区 | 日韩看片 | 久久视屏这里只有精品6国产 | 高清不卡一区 | 国产精品久久久久国产精品 | 婷婷色在线视频 | 国产精品高清在线 | 国内精品久久久久久久久久久久 | 国产乱码精品一区二区三区中文 | 99热99色| 天天干天天舔天天操 | 精品亚洲国产成av人片传媒 | 欧美精品午夜论理电影 | 自拍偷拍av | 久久综合九色综合欧洲色 | 国产午夜三级一区二区三桃花影视 | 日韩精品久久久久影院 | 日韩中文一区二区三区 | 久久精品亚洲精品国产欧美kt∨ | 男女啪啦猛视频免费 | 天天做天天添天天谢 | 日韩在线国产 | 激情网站免费观看 | 很黄很粗很湿很刺激的视频 | 亚洲欧美在线精品一区二区 | 亚洲AV国产精品无码A片 | 秋霞久久国产精品电影院 | 日本黄大片影院一区二区 | 三上悠亚2022最新新作番号 | 波多野一区二区 | 国产男女免费完整版视频 | 精品国产精品国产 | 久久久久久全国免费观看 | 国产探花在线精品一区二区 | 99pao成人国产永久免费视频 |