亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【Android游戲開發(fā)十二】(保存游戲數(shù)據(jù) [上文]

系統(tǒng) 1830 0


Himi 原創(chuàng), 歡迎轉(zhuǎn)載,轉(zhuǎn)載請在明顯處注明! 謝謝。

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

對于游戲中的數(shù)據(jù)進(jìn)行保存方式,在Android中常用的有四種保存方式,這里我先給大家統(tǒng)一先簡單的介紹下:

1. SharedPreference

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

2. 文件存儲 (FIleInputStream/FileOutputStream)

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

3.SQLite

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

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

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

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

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

保存方式之: 《SharedPreference》


優(yōu)點: 簡單、方便、適合簡單數(shù)據(jù)的快速保存

缺點:1.存數(shù)的文件只能在同一包內(nèi)使用,不能在不同包之間使用!

2.默認(rèn)將數(shù)據(jù)存放在系統(tǒng)路徑下 /data/data/com.himi/ ,沒有找到放SD卡上的方法。

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

main.xml :

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

下面是SharedPreference 的代碼實現(xiàn)和詳細(xì)講解:

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


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

優(yōu)點: 1.適合游戲存儲,能存儲較大數(shù)據(jù);

2.不僅能存儲到系統(tǒng)中,也能存儲到SD卡中!

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

以上代碼中實現(xiàn)了兩種流形式來完成寫入和讀入,這里我們?yōu)槭裁匆褂肈ata流來包裝,其實不光是獲得更多的操作方式,最主要的是方便快捷,你比如用file來讀入的時候,明顯的復(fù)雜了一些不說,它還一次性把所有數(shù)據(jù)都取出來了,不便于對數(shù)據(jù)的處理!

強(qiáng)調(diào)的有幾點:

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

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

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

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

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

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

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

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

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

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

fis = this.openFileInput("save.himi"); //這里沒有路徑,路徑是默認(rèn)的 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);這里也是默認(rèn)路徑,需要對其修改,

注意:這里修改了,那么在finally中的判定大家也要對應(yīng)的適當(dāng)修改;

注意:如果是系統(tǒng)路徑,當(dāng)沒有此文件的時候,android 會默認(rèn)創(chuàng)建一個!但是我們放入SD卡的時候要自己創(chuàng)建目錄路徑和文件!


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

AndroidMainfest.xml

這一句就是啦~

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

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

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

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


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

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

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

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

上張本項目的截圖:

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


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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 波多野结衣一二区 | 中国国产高清一级毛片 | 国产精品伦理久久久久 | 日本在线精品 | 999久久久免费精品国产牛牛 | 日韩成人三级 | 香蕉视频在线免费看 | 四虎网站在线观看 | 国产精品亚洲综合久久 | 特大一级aaaaa毛片 | 91成人国产网站在线观看 | 一区二区三区四区在线观看视频 | 亚洲欧美日韩高清专区一区 | 级毛片久久久毛片精品毛片 | 狼人伊人干 | 国产视频成人 | 99视频免费在线 | 成人看片黄a免费看视频 | 免费黄色一级大片 | 免费看美女隐私的网站 | 国产视频精品久久 | 四虎4hutv永久地址公告 | 国产福利视频在线观看 | 久久精品中文字幕不卡一二区 | 中文字幕最新中文字幕中文字幕 | 国产欧美一区二区精品性色 | 中文字幕欧美在线观看 | 老子影院午夜伦不卡手机 | 国产成人精品男人的天堂538 | 日本在线高清不卡 | 精品偷拍模特露出丝袜在线 | 99在线观看视频免费精品9 | 久久久亚洲天堂 | 亚洲毛片免费在线观看 | 欧美aaa大片 | 未成人做爰视频www 我爱52avαv永久网站 | 亚洲欧美另类在线视频 | 69网站在线观看 | 日韩黄色片 | 欧美成人激情在线 | 高清欧美一区二区三区 |