数据存储
1.SharedPreferences共享数据存储
文件的路径:/data/data/工程目录/share_prefes
一般用来存储简单的配置信息,如用户名密码,程序的默认设置信息等,数据是以类似map的键值对形式xml文件存储,不同的是,值只能为基本数据类型,如:boolean,int,String,float,long
有2种方法可获取SharedPreferences对象
getSharedPreferences(String name,int mode)
这个方法允许定义多个属性文件,只需要给这些属性文件设定不同的名字(第一个参数)即可。
getPreferences(String name,int mode)
如果程序中只需要一个属性文件,那么可以选择这个方法。由于只有唯一的属性文件,因此不需给属性文件命名。
方法第一个参数为属性文件名,第二个参数mode指定文件的访问模式
2.文件存储
a:内部存储[files][cache][assets][raw][xml(会压缩变成2进制)]
--files--
文件的路径:/data/data/工程目录/files
与java中I/O流完全一样
openFileInput(String name);
--cache--
文件的路径:/data/data/工程目录/cache
缓存文件夹,当物理空间不够时,系统会自动删除里面的文件
getCacheDir()
--assets--
只读文件,文件名称有限制【数字不能开头,只能使用java变量名的命名规则】
getAssets()
--raw--
文件任意,只读,不允许多级目录,命名遵守java命名规则,会生成一个R.raw.文件名 地址
getResources().openRawResource(R.raw.文件名);
--xml--
存储xml文件,只读,文件会压缩,生成R.xml.文件名 地址
返回的不是文件流,而是直接解析xml文件的对象
getResources().getXml(R.xml.文件名);
b:外部存储[sdcard]
使用SD卡进行文件存储需先判断SD卡是否可用
3.sqlite数据库存储
数据库默认路径:/data/data/工程目/databases
优点:
a. 效率出众,尤其是在数据量庞大的情况下
b. 十分适合存储结构化数据
c. 方便在不同的Activity,甚至不同的应用之间传递数据
4.ContentProvider内容提供者
对外进行数据共享,android跨应用共享数据的唯一方式
它将各种数据映射成数据表,对外提供一个用于访问数据表的uri,应用程序通过ContentResolver对象来访问特定uri对应的数据
5.网络存储
***************************************************
小小总结一下:
数据能用简单方式处理尽量简单
结构化数据用数据库
尽量不创建文件
私密或重要文件用内部存储,否则外部存储
1.SharedPreferences共享数据存储
文件的路径:/data/data/工程目录/share_prefes
一般用来存储简单的配置信息,如用户名密码,程序的默认设置信息等,数据是以类似map的键值对形式xml文件存储,不同的是,值只能为基本数据类型,如:boolean,int,String,float,long
有2种方法可获取SharedPreferences对象
getSharedPreferences(String name,int mode)
这个方法允许定义多个属性文件,只需要给这些属性文件设定不同的名字(第一个参数)即可。
getPreferences(String name,int mode)
如果程序中只需要一个属性文件,那么可以选择这个方法。由于只有唯一的属性文件,因此不需给属性文件命名。
方法第一个参数为属性文件名,第二个参数mode指定文件的访问模式
2.文件存储
a:内部存储[files][cache][assets][raw][xml(会压缩变成2进制)]
--files--
文件的路径:/data/data/工程目录/files
与java中I/O流完全一样
openFileInput(String name);
--cache--
文件的路径:/data/data/工程目录/cache
缓存文件夹,当物理空间不够时,系统会自动删除里面的文件
getCacheDir()
--assets--
只读文件,文件名称有限制【数字不能开头,只能使用java变量名的命名规则】
getAssets()
--raw--
文件任意,只读,不允许多级目录,命名遵守java命名规则,会生成一个R.raw.文件名 地址
getResources().openRawResource(R.raw.文件名);
--xml--
存储xml文件,只读,文件会压缩,生成R.xml.文件名 地址
返回的不是文件流,而是直接解析xml文件的对象
getResources().getXml(R.xml.文件名);
b:外部存储[sdcard]
使用SD卡进行文件存储需先判断SD卡是否可用
3.sqlite数据库存储
数据库默认路径:/data/data/工程目/databases
优点:
a. 效率出众,尤其是在数据量庞大的情况下
b. 十分适合存储结构化数据
c. 方便在不同的Activity,甚至不同的应用之间传递数据
4.ContentProvider内容提供者
对外进行数据共享,android跨应用共享数据的唯一方式
它将各种数据映射成数据表,对外提供一个用于访问数据表的uri,应用程序通过ContentResolver对象来访问特定uri对应的数据
5.网络存储
***************************************************
小小总结一下:
数据能用简单方式处理尽量简单
结构化数据用数据库
尽量不创建文件
私密或重要文件用内部存储,否则外部存储