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 的网络存储 :

相关文章
相关标签/搜索