- 第1章 Android Studio
- 第2章 AndroidManifest.xml
- 第3章 配置文件
- 第4章 UI Layout
- 第5章 Toast
- 第6章 Environment
- 第7章 Schedule 计划任务
- 第8章 Internationalization i18n with Android 国际化
- 第9章 存储
- 第10章 相机与相册
- 第11章 麦克风与录音
- 第12章 多媒体开发
- 第13章 定位
- 第14章 电话
- 第15章 消息广播
- 第16章 Service
- 第17章 NFC Near field communication
- 第18章 OkHttp - An HTTP HTTP/2 client for Android and Java applications
- 第19章 EventBus
- 第20章 设计模式
- 第21章 java.net 介绍和使用
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第9章 存储
9.1. SharedPreferences
SharedPreferences是Android中的数据存储技术,常用来存储一些轻量级的数据。
实际上SharedPreferences是 NoSQL 数据库,用于处理的key-value键值对存储,类似Windows 系统的注册表,Linux 系统里的 Berkeley DB (bdb) 以及衍生出的 dba,mdb 这类 hash 表数据库。
9.1.1. 操作模式
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容 Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件. Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件. MODE_WORLD_READABLE:表示当前文件可以被其他应用读取. MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.
9.1.2. 保存数据
Button buttonPut = (Button) findViewById(R.id.buttonPut); buttonPut.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { //实例化SharedPreferences对象 SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE); //实例化SharedPreferences.Editor对象 SharedPreferences.Editor editor = sharedPreferences.edit(); //用putString的方法保存数据 editor.putString("name", "Neo"); editor.putString("nickname", "netkiller"); editor.putBoolean("sex", true); editor.putInt("age", 30); editor.putFloat("tall", 180.23f); Set<String> books = new HashSet<String>(); books.add("Netkiller Linux 手札"); books.add("Netkiller Java 手札"); books.add("Netkiller Android 手札"); editor.putStringSet("books", books); //提交当前数据 editor.commit(); } });
9.1.3. 读取数据
Button buttonGet = (Button) findViewById(R.id.buttonGet); buttonGet.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { //实例化SharedPreferences对象 SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE); //使用getString方法获得value, String name = sharedPreferences.getString("name", ""); String nickname = sharedPreferences.getString("nickname", ""); boolean sex = sharedPreferences.getBoolean("sex", false); int age = sharedPreferences.getInt("age", 0); float tall = sharedPreferences.getFloat("tall", 0f); Set<String> books = sharedPreferences.getStringSet("books", null); Log.i("SharedPreferences", String.format("%s,%s,%s,%s,%s,%s", name, nickname, sex, age, tall, books.toString())); } });
9.1.4. 通过 key 查询数据是否存在
SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE); if (sharedPreferences.contains("nickname")) { Log.i("SharedPreferences", sharedPreferences.getString("nickname", "")); }else{ Log.i("SharedPreferences", "key: nickname 不存在"); }
9.1.5. 删除数据
SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.remove("nickname"); editor.commit(); Log.i("SharedPreferences", sharedPreferences.getAll().toString());
9.1.6. 清空数据
SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.clear(); editor.commit(); Log.i("SharedPreferences", sharedPreferences.getAll().toString());
9.1.7. 对象存储
对象存储,需要将对象序列化,然后反序列化
9.1.8. SharedPreferences 读取物理存储文件
SharedPreferences 的数据存储再一个 xml 文件中,他的地址是:
//<package name>应替换成应用的包名, <name> File xmlFile = new File("/data/data/<package name>/shared_prefs/<name>.xml");
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="name">陈景峰</string> <string name="nickname">netkiller</string> <int name="age" value="30" /> </map>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论