Android存储-SharedPreferences
Android的数据存储
在Android系统中,每个应用软件数据(包括文件)为该应用软件所私有。但是,Android同样也提供了一种标准方式或接口,让应用软件将私有数据开放,供其他应用软件使用。
在Android中,存储方式有:SharedPreferences、文件存储、SQLite数据库、Content provider(内容提供器)和网络。
1. SharedPreferences方式
SharedPreferences是一种轻量级存储方式,适合存储登陆信息、个人基本信息等简单的key-value形式的值,它可以保存一些基本的数据类型,如String,int,Boolean等。下面通过简单实例来讲解,功能是存储个人基本信息。代码如下:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.sharedpreferences);
nameET = (EditText)findViewById(R.id.name);
sexET = (EditText)findViewById(R.id.sex);
habitET = (EditText)findViewById(R.id.habit);
employeeCB = (CheckBox)findViewById(R.id.isEmployee);
companySize = (RadioGroup)findViewById(R.id.companySize);
bigCompany = (RadioButton) findViewById(R.id.bigCompany);
mediumCompany = (RadioButton) findViewById(R.id.mediumCompany);
smallCompany = (RadioButton) findViewById(R.id.smallCompany);
//注册CheckBox对象状态变化的监听端口
employeeCB.setOnCheckedChangeListener(this);
SharedPreferences sharedPreferences = getSharedPreferences(NAME_SHARED, Activity.MODE_PRIVATE);
//如果name不存在,以""代替
nameET.setText(sharedPreferences.getString("name", ""));
sexET.setText(sharedPreferences.getString("sex",""));
habitET.setText(sharedPreferences.getString("habit", ""));
employeeCB.setChecked(sharedPreferences.getBoolean("isEmployee", false));
companySize.check(sharedPreferences.getInt("companySize", -1));
onCheckedChanged(employeeCB, employeeCB.isChecked());
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
System.out.println("---onCheckedChanged");
bigCompany.setEnabled(isChecked);
mediumCompany.setEnabled(isChecked);
smallCompany.setEnabled(isChecked);
}
@Override
protected void onStop()
{
//退出时保存数据,首先获取SharedPreferences对象,
SharedPreferences mySharedPreferences = getSharedPreferences(NAME_SHARED, Activity.MODE_PRIVATE);
SharedPreferences.Editor myEditor = mySharedPreferences.edit();
myEditor.putString("name", nameET.getText().toString());
myEditor.putString("sex",sexET.getText().toString());
myEditor.putString("habit", habitET.getText().toString());
myEditor.putBoolean("isEmployee", employeeCB.isChecked());
myEditor.putInt("companySize", companySize.getCheckedRadioButtonId());
//提交数据,保存
myEditor.commit();
super.onStop();
}
用户点击“是否工作”,程序会根据其状态来确定是否会显示公司规模,当所有都选择完成后,用户退出程序,程序会调用onStop(),自动保存当前所有的数据,首先,获取通过getSharedPreferences()获取SharedPreferences对象,在通过SharedPreferences对象获取SharedPreferences.Editor对象,利用SharedPreferences.Editor对象完成数据的存储与获取。
保存的数据会以XML形式保存,保存位置为:/data/data/<package name>/shared_prefs/xxx.xml 在DDMS中的File Explorer中可以看到。这个文件可以导出来查看,如下:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
- <map>
<int name="companySize" value="2131034129" />
<string name="sex">man</string>
<string name="habit">music</string>
<boolean name="isEmployee" value="true" />
<string name="name">wanglejun</string>
</map>
Android存储-SharedPreferences相关推荐
- Android存储--SharedPreferences
简介 在Android中,主要有以下几种存储方式: SharedPreferences,在键值对中存储私有原始数据. 内部存储,在设备内存中存储私有数据. 官方示例: String FILENAME ...
- android 之SharedPreferences,SDCard以及网络存储
android 之数据存储分类: A.Shared Preferences:存储私有的数据以键值对的形式 B.内部存储:在设备的内存中存储私有数据 C.外部存储:在外部设备(手机SDCard等)存储共 ...
- Android:使用SharedPreferences进行数据存储
使用SharedPreferences进行数据存储 目录 访问SharedPreferences中的数据 案例: string.xml文件 main.xml布局文件 SpActivity 如何访问其他 ...
- Android存储之SharedPreferences源码解析
个人博客:haichenyi.com.感谢关注 1. 目录 1–目录 2–简介 3–getSharedPreferences会不会阻塞线程,为什么? 4–get操作,为什么有时候会卡顿? 5–comm ...
- android 保存对象,使用sharedpreferences在Android存储对象 -解道Jdon
使用SharedPreferences在Android存储对象 为什么不用SQLite? 原因多种:除了面向对象和关系数据库之间的阻抗不匹配时,SQLite可能是矫枉过正(带来了更多的开销)对于一些简 ...
- Android使用SharedPreferences存储APP设置参数
一.什么是SharedPreferences? android.content.SharedPreferences是一个接口,用来获取和修改持久化存储的数据. Android数据持久化方法中最简单的一 ...
- [转]Android数据存储SharedPreferences的使用
本文转自:http://yaku2688.iteye.com/blog/1185348 SharedPreferences配置文件为XML文件,路径:/data/data/<package na ...
- 安卓 存储---SharedPreferences
导包 import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; 存储数据 / ...
- Android存储路径你了解多少?
在了解存储路径之前,先来看看Android QQ的文件管理界面,了解一下QQ的数据文件路径来源,到底是来源于什么地方? 手Q文件管理对应存储目录 我的文件:是指放在QQ指定目录下的文件:/tencen ...
最新文章
- 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(四)图像的矩
- 宏基因组公众号7月精选文章目录
- 范数(赋范线性空间、向量范数、矩阵范数)
- springBoot+mybatisPlus小demo
- ASP.NET Core 下的依赖注入(一)
- 非常棒的FLASH版本PPT制作工具PREZI
- 必须掌握,二叉树的前中后序遍历(迭代+递归)详细代码
- python读取csv最后一行_用Python读取CSV文件行的最后一个非空单元格
- AES在线加密解密-附AES128,192,256,CBC,CFB,ECB,OFB,PCBC各种加密解密源码
- 可汗学院公开课:线性代数笔记-11-求解三元方程组
- JS中apply与call的用法
- 一站式:虚拟机安装Linux系统(CentOS_7),多节点Linux环境打造,XShell的使用
- Generic receive offload
- 2019智能手表推荐_2020年买什么智能手表合适?
- 青岛物联网关键技术资源发展路线图发布
- 神经网络、机器学习和大数据速查图
- 设圆半径r = 1.5,圆柱高h = 3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积
- 915xjtu2015_3
- MAC下,为什么下载ubuntu下载提示无课装载文件系统,下载很多版本,在官网上也下载了,请问如何解决
- Squirrel状态机-从原理探究到最佳实践
热门文章
- 推动运营商安全标准体系建设
- Kali Linux渗透基础知识整理(四):维持访问
- STL的基本函数笔记
- SecondaryNameNode的Inconsistent checkpoint fields异常
- Chrome 内存和CPU消耗量双料冠军
- Gcc 完全参考手册,参数说明,操作指南-Gcc Complete referene
- IT168技术开发频道一周精选2007-11-30
- node事件循环 EventEmitter 异步I/O Buffer缓冲区 模块
- 聊聊Spring Data Auditable接口的变化
- MyEclipse持续性开发教程:用JPA和Spring管理数据(三)