Android 數據存儲(筆記)

Android 數據存儲數據庫

Android中數據存儲的方式有一下幾種:緩存

 一.SharedPreferences :安全

            是一種輕量級的數據存儲方式,主要用於保存應用的一些經常使用配置,以xml 文件的方式存儲數據,
網絡

            以鍵值對的方式存取數據。
app

            SharedPreferences 的類型(MODE):ide

            MODE_PRIVATE :私有類型,只容許本應用使用,這個爲默認類型函數

            MODE_APPEND :若是SharedPreferences 文件已經存在,則數據寫入這個文件的末尾spa

            MODE_WORLD_READABLE : 容許其餘app讀取數據 ,這個值在API 17 被廢除了(可能爲了保護數據安全)
xml

            MODE_WORLD_WRITEABLE : 容許其餘app寫入數據 ,這個也是 在 API 17 廢除
對象

            獲取SharedPreferences 的兩種方式:

            getSharedPreferences(String name,int MODE);得到的對象能夠被同一應用程序下的其餘組件共享

            getPreferences(); 得到的SharedPreferences對象只能在該Activity中使用.

            保存數據:

            SharedPreferences sp = Context.getSharedPreferences(String name,int MODE);

            SharedPreferences.Editor editor = sp.edit();

            editor.put(String key,String value);

            editor.commit(); 提交數據

            讀取數據:

            SharedPreferences sp = Context.getSharedPreferences(String name,int MODE);

            String value = sp.get(String key);

                         

二.基於Java IO 方式的 file:

IO操做數據有兩種不一樣的類型:私有的file,存放在data/data/目錄下, 另外一個是對SDcard操做

            1.私有file:

                保存數據:MODE 和SharedPreferences 同樣

                FileOutputStream fo = Context.openFileOutput(String name,int MODE)

                讀取數據:

                FileInputStream fi = Context.openFileInput(String name)


            2.對SDCard 的數據進行操做:這裏涉及到一個 Environment 類,它是用來管理Android 內部存儲和SDcard的

                    其中包含了sdcard的一些字段 表示sd卡當前的狀態:

            1. MEDIA_BAD_REMOVAL 在沒有掛載前存儲媒體已被移除

            2. MEDIA_CHECKING                            正在檢查存儲媒體

            3. MEDIA_MOUNTED                        存儲媒體已掛載,而且掛載點可讀寫

            4. MEDIA_MOUNTED_READ_ONLY    存儲媒體已掛載,但只可讀

            5. MEDIA_NOFS                                存儲媒體是空白或不支持的文件系統

            6. MEDIA_REMOVED                        存儲媒體被移除

            7. MEDIA_SHARED                            存儲媒體正在經過USB共享

            8. MEDIA_UNMOUNTABLE               存儲媒體沒法掛載

            9. MEDIA_UNMOUNTED                   存儲媒體沒有掛載

                   Environment 中的一些靜態方法:

                    獲取Android 根目錄 File root = Environment.getRootDirectory();

                    獲取data目錄         File data = Environment.getDataDirectory();

                    獲取 Android 下載/緩存內容目錄 File file = Environment.getDownloadCacheDirectory();

                    獲取SDCard狀態 :Environment.getExternalStorageState();

                    獲取SDCard根目錄:File root = Environment.getExternalStorageDirectory();


                    對SDCard進行數據存取的話,首先獲取sdcard 的狀態,判斷sdcard是掛載,若是掛載了sdcard

                    則獲取Sdcard 的根目錄,而後和本身建立的文件的目錄拼接成一個文件的存放目錄,最後用IO便可

                    (這裏有個小細節:File類型的量能夠和字符串直接用「+」拼接,而後變成字符串)

                    File root = Environment.getExternalStorageDirectory();//獲取sdcard根目錄

                    File file = new File(root+File.separator+"MyFile.txt");  separator 爲路徑分隔符



三.SQLite 數據庫:

        Android 內置的SQLite是一種輕量級的數據庫,SQL數據庫的功能它基本都有

        Android操做SQLite涉及到兩個類 :

                    SQLiteDataBase :SQLite數據庫類,這個類沒有構造函數,其對象是經過SQLiteOpenHelper 類獲取的

                                    這類具備數據庫的增刪查改等方法,還能夠調用execSQL() 方法來執行標準的SQL語句

                    SQLiteOpenHelper :數據庫輔助類,這個類是用來獲取已有的數據庫 或者 建立新的數據庫以及數據庫

                                版本號。SQLiteOpenHelper中有兩個抽象方法,用於建立數據庫中的表格,和升級數據庫用                                        的,這兩個方法須要用戶本身去實現


                建立一個類MyDataBase繼承 SQLiteOpenHelper 

                            public MyDataBase(Context context){  構造函數

                                       super(Context context,String dataBaseName,null,int DataBaseVersion);父類構造函數

                                }

                            實現其中的抽象方法:

                            onCreate(SQLiteDataBase db){

                                        db.execSQL(String s);    在次執行SQL語句建立表格

                                }

                            onUpgrade(SQLiteDataBase db,int oldVersion,int newVersion){}   當數據庫版本號改變是調用

                                        

                                

    

四.ContentProvider 數據共享:

五.基於 Java Socket/http 的網絡存儲 :

相關文章
相關標籤/搜索