一、数据存储选项:Data Storage ——Storage Options【重点】
-
1、Shared Preferences
- Store private primitive data in key-value pairs.
- 保存简单的键值对数据。 2、Internal Storage
- Store private data on the device memory.
- 在手机内存中保存不对外共享的信息。 3、External Storage
- Store public data on the shared external storage.
- 在外部存储设备上保存公共的数据信息。主要指保存在SDCard上。 4、SQLite Databases
- Store structured data in a private database.
- 将结构化的数据保存进数据库。 5、Network Connection
- Store data on the web with your own network server.
- 将数据保存到自己的远程服务器上。
- 【备注:】
-
- 内部存储空间十分有限,因而显得可贵,另外,它也是系统本身和系统应用程序主要的数据存储所在地,一旦内部存储空间耗尽,手机也就无法使用了。
- 所以对于内部存储空间,我们要尽量避免使用。Shared Preferences和SQLite数据库都是存储在内部存储空间上的。内部存储一般用Context来获取和操作。
- getFilesDir()获取你app的内部存储空间,相当于你的应用在内部存储上的根目录。
- 最容易混淆的是外部存储,如果说pc上区分出外部存储和内部存储的话,那么自带的硬盘算是内部存储,U盘或者移动硬盘算是外部存储,因此我们很容易带着这样的理解去看待安卓手机,认为机身固有存储是内部存储,而扩展的SDCard卡是外部存储。比如Nexus 4有16G的内部存储,普通消费者可以这样理解,但是安卓的编程中不能,这16GB仍然是外部存储。
- SharedPreferences:
(一)、概念:SharedPreferences是Android系统提供的一个通用的数据持久化框架,用于存储和读取key-value类型的原始基本数据类型对,目前支持string、int、long、float、boolean等基本类型的存储,对于自定义的对象数据类型,无法使用SharedPreferences来存储。SharedPreferences主要用于存储系统的配置信息。例如上次登录的用户名,上次最后设置的配置信息(如:是否打开音效、是否使用振动,小游戏的玩家积分等)。当再次启动程序后依然保持原有设置。SharedPreferences用键值对方式存储,方便写入和读取。
(二)、使用SharedPreferences的步骤:1、获取SharedPreferences对象;SharedPreferences本身是一个接口,无法直接创建实例,通过Context的getSharedPreferences(String name, int mode)方法来获取实例。该方法的第二个参数有以下三个值:【文件读写的操作模式】- Context.MODE_PRIVATE: 指定该SharedPreferences的数据只能被本应用程序读、写;
- Context.MODE_APPEND:新内容追加到原内容后;
- Context.MODE_WORLD_READABLE: 指定 SharedPreferences数据能被其他应用程序读,但是不支持写;
- Context.MODE_WORLD_WRITEABLE: 指定 SharedPreferences数据能被其他应用程序读、写。会覆盖原数据。
- 可以使用 + 连接这些权限。
2、调用edit()方法获取SharedPreferences.Editor;3、通过SharedPreferences.Editor接口提供的put()方法对SharedPreferences进行更新;4、调用SharedPreferences.Editor的commit()方法,将更新提交到SharedPreferences中。
(三)、核心代码:button_main_savedata.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { prefs = getSharedPreferences("myaccount", Context.MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit(); editor.putInt("age", 38); editor.putString("username", "wangxiangjun"); editor.putString("pwd", "123456"); editor.putString("username", "xiangjun"); editor.putString("age", "I'm 40 years old!"); editor.commit(); } }); button_main_readdata.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { prefs = getSharedPreferences("myaccount", Context.MODE_PRIVATE); String name = prefs.getString("username", "wxj"); String pwd = prefs.getString("pwd", "000"); int age = prefs.getInt("age", 20); System.out.println("====>" + name + ":" + pwd + ":" + age); } });
(四)、保存之后的SharedPreferences数据文件:SharedPreferences数据总是以xml格式保存在:/data/data/包名/shared_prefs目录下;例如:<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map><string name="pwd">123456</string><string name="username">xiangjun</string><int name="age">20</int></map>
(五)、SharedPreferences的设置Setting功能:1、引入:2、PreferenceActivity的简单用法:1)、步骤:- 将setting.xml文件放到res的xml目录下;
- 将arrays.xml文件放到values目录下;
- 写一个页面SettingActivity。
3)、核心代码: