Android 数据存储之SP存储,内部存储,外部存储
Android提供了多种数据存储的技术来永久的保存应用数据,以便于开发者能够根据自己的需求来选择合适的数据存储方案,主要有SharedPreferences,内部存储(Internal Storage),外部存储(External Storage),SQLite数据库,网络存储等
一:SharedPreferences
第一步:getSharedPreferences方法获取到SharedPreferences对象。系统会在/data/data/包名/shared_prefs目录下生成一个**文件
Context.MODE_PRIVATE:默认的文件创建模式。使用该模式创建文件,如果文件目录中已存在同名文件,则新建的文件会覆盖旧文件。并且,文件只能由创建文件的应用(或者与该应用共享同一user ID的应用)所访问。
Context.MODE_APPEND:使用该模式创建文件,如果文件目录中已存在同名文件,则新的内容将直接被添加到旧文件的尾部,而不会新建一个文件来覆盖旧文件。
Context.MODE_WORLD_READABLE:使其他应用对文件具有读的权限。
Context.MODE_WORLD_WIRTEABLE:使其他应用对文件具有写的权限。
注意:从API Level 17以后,MODEWORLDREADABLE和MODEWORLDWRITEABLE已经被弃用。从Android N(即7.x)开始,使用这两个常量会导致SecurityException。这意味着面向Android N和更高版本的应用无法按名称共享私有文件,尝试共享“file://"类型的URI将会导致FileUriExposedException。
第二步:通过SharedPreferences对象的edit()方法获取一个SharedPreferences.Editor对象
第三步:调用putBoolean()(或者putString()、putInt()等,由要保存的数据的数据类型而定)等方法添加值
第四步:使用提交commit()方法有返回值boolean类型和apply()无返回值/*获取SharedPreferences对象
1.第一个参数为name:表示文件名,系统会在/data/data/包名/shared_prefs目录下生成一个以该参数命名的.xml文件
2.第二个mode表示创建的模式,建议为0或者MODE_PRIVATE
* */
SharedPreferences sp = getSharedPreferences("test_sp", MODE_PRIVATE);
//获取Editor对象
SharedPreferences.Editor editor = sp.edit();
//根据要保存的数据类型,调用对应的put方法
//以键值对形式添加
editor.putString("data", "我是Rocky");
//提交新值,必须执行否则前面操作无效
editor.commit();
结果:
我是Rocky
第五步:获取SP数据//根据保存时所用的name属性,获取SharedPreferences对象
SharedPreferences sp=getSharedPreferences("test_sp",MODE_PRIVATE);
//根据数据类型,调用对应的get方法,通过键取得对应的值。
String aa=sp.getString("data",null);
Log.d("aa",aa);
结果:
D/aa: 我是Rocky
二:内部存储
内