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相关推荐

  1. Android存储--SharedPreferences

    简介 在Android中,主要有以下几种存储方式: SharedPreferences,在键值对中存储私有原始数据. 内部存储,在设备内存中存储私有数据. 官方示例: String FILENAME ...

  2. android 之SharedPreferences,SDCard以及网络存储

    android 之数据存储分类: A.Shared Preferences:存储私有的数据以键值对的形式 B.内部存储:在设备的内存中存储私有数据 C.外部存储:在外部设备(手机SDCard等)存储共 ...

  3. Android:使用SharedPreferences进行数据存储

    使用SharedPreferences进行数据存储 目录 访问SharedPreferences中的数据 案例: string.xml文件 main.xml布局文件 SpActivity 如何访问其他 ...

  4. Android存储之SharedPreferences源码解析

    个人博客:haichenyi.com.感谢关注 1. 目录 1–目录 2–简介 3–getSharedPreferences会不会阻塞线程,为什么? 4–get操作,为什么有时候会卡顿? 5–comm ...

  5. android 保存对象,使用sharedpreferences在Android存储对象 -解道Jdon

    使用SharedPreferences在Android存储对象 为什么不用SQLite? 原因多种:除了面向对象和关系数据库之间的阻抗不匹配时,SQLite可能是矫枉过正(带来了更多的开销)对于一些简 ...

  6. Android使用SharedPreferences存储APP设置参数

    一.什么是SharedPreferences? android.content.SharedPreferences是一个接口,用来获取和修改持久化存储的数据. Android数据持久化方法中最简单的一 ...

  7. [转]Android数据存储SharedPreferences的使用

    本文转自:http://yaku2688.iteye.com/blog/1185348 SharedPreferences配置文件为XML文件,路径:/data/data/<package na ...

  8. 安卓 存储---SharedPreferences

    导包 import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; 存储数据 / ...

  9. Android存储路径你了解多少?

    在了解存储路径之前,先来看看Android QQ的文件管理界面,了解一下QQ的数据文件路径来源,到底是来源于什么地方? 手Q文件管理对应存储目录 我的文件:是指放在QQ指定目录下的文件:/tencen ...

最新文章

  1. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(四)图像的矩
  2. 宏基因组公众号7月精选文章目录
  3. 范数(赋范线性空间、向量范数、矩阵范数)
  4. springBoot+mybatisPlus小demo
  5. ASP.NET Core 下的依赖注入(一)
  6. 非常棒的FLASH版本PPT制作工具PREZI
  7. 必须掌握,二叉树的前中后序遍历(迭代+递归)详细代码
  8. python读取csv最后一行_用Python读取CSV文件行的最后一个非空单元格
  9. AES在线加密解密-附AES128,192,256,CBC,CFB,ECB,OFB,PCBC各种加密解密源码
  10. 可汗学院公开课:线性代数笔记-11-求解三元方程组
  11. JS中apply与call的用法
  12. 一站式:虚拟机安装Linux系统(CentOS_7),多节点Linux环境打造,XShell的使用
  13. Generic receive offload
  14. 2019智能手表推荐_2020年买什么智能手表合适?
  15. 青岛物联网关键技术资源发展路线图发布
  16. 神经网络、机器学习和大数据速查图
  17. 设圆半径r = 1.5,圆柱高h = 3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积
  18. 915xjtu2015_3
  19. MAC下,为什么下载ubuntu下载提示无课装载文件系统,下载很多版本,在官网上也下载了,请问如何解决
  20. Squirrel状态机-从原理探究到最佳实践

热门文章

  1. 推动运营商安全标准体系建设
  2. Kali Linux渗透基础知识整理(四):维持访问
  3. STL的基本函数笔记
  4. SecondaryNameNode的Inconsistent checkpoint fields异常
  5. Chrome 内存和CPU消耗量双料冠军
  6. Gcc 完全参考手册,参数说明,操作指南-Gcc Complete referene
  7. IT168技术开发频道一周精选2007-11-30
  8. node事件循环 EventEmitter 异步I/O Buffer缓冲区 模块
  9. 聊聊Spring Data Auditable接口的变化
  10. MyEclipse持续性开发教程:用JPA和Spring管理数据(三)