19、从头学Android之Android的数据存储--SharedPreferences

SharedPreferences Android SharedPreference的简单使用,登录是保存用户信息。 立即下载
SharedPreferences简介

在Android开发过程中,有时候我们需要保存一些简单的软件配置等简单数据的信息,而如果我们直接用数据库存储的话又不太方便,在这里我们就可以用到SharedPreferences,SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此保存的数据主要是简单类型的键值对(key-value),它保存的是一个XML文件。

SharedPreferences常用的属性和方法

方法名称

描述

public abstract boolean contains (String key)

判断SharedPreferences是否包含特定key的数据

public abstract SharedPreferences.Editor edit ()

返回一个Edit对象用于操作SharedPreferences

public abstract Map<String, ?> getAll ()

获取SharedPreferences数据里全部的key-value对

getXXX(String key,XXX defvlaue)

获取SharedPreferences数据指定key所对应的value,如果该key不存在,返回默认值defValue。其中XXX可以是boolean、float、int、long、String等基本类型的值

由于SharedPreference是一个接口,而且在这个接口里并没有提供写入数据和读取数据的能力。但是在其内部有一个Editor内部的接口,Edit这个接口有一系列的方法用于操作SharedPreference。

Editor接口的常用方法

方法名称

描述

public abstract SharedPreferences.Editor clear ()

清空SharedPreferences里所有的数据

public abstract boolean commit ()

当Editor编辑完成后,调用该方法可以提交修改,而且必须要调用这个数据才修改

public abstract SharedPreferences.Editor putXXX (String key, boolean XXX)

向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值

public abstract SharedPreferences.Editor remove (String key)

删除SharedPreferences里指定key对应的数据项

 

SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,可以通过Context.getSharedPreferences(String name.int mode)来得到一个SharedPreferences实例

name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。一般这个文件存储在/data/data/<package name>/shared_prefs下(这个面试常问到)

mode:是指定读写方式,其值有三种,分别为:

Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写

Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写

Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。

实例:用SharedPreferences进行简单的操作

[java]  view plain copy print ?
  1. package com.jiahui.preferences;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.SharedPreferences;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.widget.Button;  
  8. import android.widget.EditText;  
  9.   
  10. public class SharedPreferencesDemoActivity extends Activity {  
  11.   
  12.     private SharedPreferences sharedPreferences;  
  13.   
  14.     private SharedPreferences.Editor editor;  
  15.   
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.main);  
  19.   
  20.         sharedPreferences = this.getSharedPreferences("test",MODE_WORLD_READABLE);  
  21.         editor = sharedPreferences.edit();  
  22.   
  23.         final EditText edtName = (EditText) this.findViewById(R.id.edtName);  
  24.         final EditText edtAge = (EditText) this.findViewById(R.id.edtAge);  
  25.   
  26.         Button btnRead = (Button) this.findViewById(R.id.btnRead);  
  27.         Button btnWrite = (Button) this.findViewById(R.id.btnWrite);  
  28.   
  29.         btnRead.setOnClickListener(new View.OnClickListener() {  
  30.   
  31.             @Override  
  32.             public void onClick(View v) {  
  33.                 // 如果没有这个key就以默认值  
  34.                 String name = sharedPreferences.getString("name", null);  
  35.                 int age = sharedPreferences.getInt("age", 0);  
  36.                 edtAge.setText(String.valueOf(age));  
  37.                 edtName.setText(name);  
  38.             }  
  39.         });  
  40.   
  41.         btnWrite.setOnClickListener(new View.OnClickListener() {  
  42.   
  43.             @Override  
  44.             public void onClick(View v) {  
  45.                 String name = edtName.getText().toString();  
  46.                 int age = Integer.parseInt(edtAge.getText().toString());  
  47.                 editor.putInt("age", age);  
  48.                 editor.putString("name", name);  
  49.   
  50.                 // 一定要提交  
  51.                 editor.commit();  
  52.   
  53.             }  
  54.         });  
  55.   
  56.     }  
  57. }  


实现效果:

 

用File Explorer可以查看在data/data/com.jiahui.preferences/shared_prefs/下多了一个XML文件

 

将XML文件导出我们可以看到在这个XML文件里存储了以下内容:

[html]  view plain copy print ?
  1. <?xml version='1.0' encoding='utf-8' standalone='yes' ?>  
  2. <map>  
  3. <int name="age" value="20" />  
  4. <string name="name">jiahui</string>  
  5. </map>  

读写其他应用SharedPreferences

在有时的开发过程中,我们可能要访问其他的应用程序的SharedPreferences,要实现这样的功能,我们必须要保证要访问的那个应用程序的SharedPreferences的访问权限要是MODE_WORLD_READABLE,这表明该SharedPreferences可以被其他应用程序读取,如果指定的MODE_WORLD_WRITEABLE表明该SharedPreferences可以被其他应用程序读取写入其实现思路如下

1、  获得其他应用程序对应的Context

2、  通过这个Context得到这个应用程序的SharedPreferences,然后再利用这个SharedPreferences读取内容

以上一例的SharedPreference为例。实现代码:

[java]  view plain copy print ?
  1. package com.jiahui.preferences2;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Context;  
  5. import android.content.SharedPreferences;  
  6. import android.content.pm.PackageManager.NameNotFoundException;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9. import android.widget.Button;  
  10. import android.widget.EditText;  
  11.   
  12. public class SharedPreferencesDemo02Activity extends Activity {  
  13.   
  14.     private Button btnRead;  
  15.     private EditText edtResult;  
  16.     Context otherContext;  
  17.   
  18.     public void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.main);  
  21.   
  22.         try {  
  23.             // 获取其他应用程序的Context  
  24.             otherContext = createPackageContext("com.jiahui.preferences",  
  25.                     CONTEXT_IGNORE_SECURITY);  
  26.         } catch (NameNotFoundException e) {  
  27.             e.printStackTrace();  
  28.         }  
  29.   
  30.         edtResult = (EditText) this.findViewById(R.id.edtResult);  
  31.   
  32.         btnRead = (Button) this.findViewById(R.id.btnRead);  
  33.         btnRead.setOnClickListener(new View.OnClickListener() {  
  34.   
  35.             @Override  
  36.             public void onClick(View v) {  
  37.                 // 获取其他应用程序的SharedPreferences  
  38.                 SharedPreferences preferences = otherContext  
  39.                         .getSharedPreferences("test",  
  40.                                 Context.MODE_WORLD_READABLE);  
  41.   
  42.                 String name = preferences.getString("name", null);  
  43.                 int age = preferences.getInt("age", 0);  
  44.                 edtResult.setText("访问的结果为:姓名:" + name + "年龄:" + age);  
  45.   
  46.             }  
  47.         });  
  48.   
  49.     }  
  50. }  


 实现效果:

SharedPreferences的注意事项:

编辑完SharedPreferences一定要记得调用Editor的commit()方法,否则不会将数据写入到文件里的。

回顾总结:

1、  如何得到SharedPreferences

SharedPreferences preferences=getPreferences(“test”,MODE_PRIVATE);

2、  如何编辑SharedPreferences

得到Editor对象实例

SharedPreferences.Editor editor=preferences.editor();

3、  SharedPreferences的存储位置

/data/data/<package name>/shared_prefs

 

如需转载引用请注明出处:http://blog.youkuaiyun.com/jiahui524

Android SharedPreferences存储的正确写法 主要介绍了Android SharedPreferences存储的正确写法的相关资料,需要的朋友可以参考下 立即下载

相关推荐

java实现自动发送微信QQ消息(可发图片)

自动发送微信/QQ/微博等消息 一:功能:实现发送QQ/微信/微博消息,程序控制。 效果演示(实现自动发生QQ微信消息给女友,发微博信息也可以就不演示了) 二:原理讲解:将剪贴板的内容给发送到QQ微信中去,复制粘贴发送。 模拟真实操作进行发送信息。 三:前期准备,软件安装,及初步测试。...

XURUNFA950827的博客 1万+

Android存储方式SharedPreferences、ContentProvider分析

本文摘自《Android开发高手课》 作者 张绍文 前微信高级工程师,Tinker负责人 一、SharedPreferences SharedPreferences是 Android 中比较常用的存储方法,它可以用来存储一些比较小的键值对集合。 问题: 1、跨进程不安全。 由于没有使用跨进程的锁,就算使用MODE_MULTI_PROCESS,SharedPreferences 在跨进程频繁读写有可能导致数据全部丢失。根据线上统计,SP 大约会有万分之一的损坏率。 2、加载缓慢 。SharedPreferen

weixin_43865681的博客 1240

R语言影像组学实战:从医学图像到预测模型的完整流程(附代码)

本文详细介绍了使用R语言进行影像组学分析的完整实战流程。从环境搭建、数据准备,到医学图像的特征提取与筛选,再到利用机器学习构建预测模型并进行评估,提供了清晰的步骤和可运行的R代码示例,帮助研究者和数据分析师掌握从医学图像到临床预测模型的核心技术。

qsc901234的博客 732

Android存储之SharedPreferences

一、概述 SharedPreferences是一种轻量级的数据存储方式,采用键值对的存储方式。 SharedPreferences只能存储少量数据,大量数据不能使用该方式存储,支持存储的数据类型有booleans, floats, ints, longs, and strings。 SharedPreferences存储到一个XML文件中的,路径在/data/data//shared_prefs/下,文件名以及存储后面详细讲述。 二、基本用法 1.获取SharedPreferences对象 要创建存储文件或

weixin_43865681的博客 1461

从solidworks导出URDF模型

一、下载sw_urdf_exporter插件 ROS目前提供了SolidWorks转URDF的插件,叫做sw_urdf_exporter,从http://wiki.ros.org/sw_urdf_exporter下载sw2urdfSetup.exe文件,下载后点击安装,安装完成后就能在solidworks中导出URDF模型了。 二、创建solidworks模型 下面以较为简单的四轮小车为例进行说...

weixin_45168199的博客 4万+

rk3399开发环境的介绍

由于Bluez的介绍文档有限,以及对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度,学习曲线也相对较陡,所以我有了这个想法,专门对Bluez做一个系统性的介绍,尽可能的涵盖所有内容。

朝气蓬勃 711

关于SharedPreferences一些总结

问题来源 在QQ相互学习(编程5分钟,扯淡两小时)的过程中,有位哥们提出了一个问题,sharePreferes最多存多少信息,这个度量各位可以理解为多少KB。他这么一问,还真不知道了,话说这个就有点尴尬了,感觉翻阅了一些源码,在查看源码的过程中,理解了一些东西,以前有些很模糊的概念,现在也有了感觉,特此记录一下其中学到的知识。以下SharedPrefences简称sp。 开始扯淡 sp...

成长的烧年 2997

YOLOv13添加轻量化的EMA模块Faster_EMA,轻量又涨点!map50提升4.56个点,召回率提升9.66!

本文介绍了YOLOv13模型的优化移植方法,通过添加Faster_EMA模块和超参数调整,使模型性能显著提升。主要修改包括:1) 创建新的模型配置文件yolov13-Faster_EMA.yaml;2) 在tasks.py中添加新模块;3) 修改__init__.py和block.py文件,新增Partial_conv3和DropPath类。优化后模型mAP50提升4.56%,召回率提升9.66%,验证了改进方案的有效性。代码实现了局部卷积和随机深度等先进技术,为YOLO系列模型性能优化提供了新思路。

FJN110的博客 2605

android sharedpreferences保存内容大小,android – 如何使用SharedPreferences保存多个值......

通过在单个字符串中添加多个收藏夹,您可以在一个首选项中保存多个收藏夹,每个收藏夹项目用逗号分隔.然后,您可以使用convertStringToArray方法将其转换为String Array.这是完整的源代码.使用MyUtility Methods保存多个喜欢的项目.MyUtility.addFavoriteItem(this, "Sports");MyUtility.addFavoriteIte...

weixin_35985162的博客 1264

【光伏风电功率预测】偏差考核每月少几十万:STL-VMD + Informer-LSTM 在某基地的落地案例

摘要:某风光一体化基地通过STL-VMD二次分解与Informer-LSTM并行残差模型,在不推翻现有预测系统的情况下,将风光功率预测的综合nRMSE降低了1.2-1.5个百分点。该方案通过分解预测误差为多个子序列,并采用不同模型处理各频段特征,显著改善了关键时段的预测精度。实施后,风电nRMSE从9.0%降至7.6%,光伏从10.2%降至8.8%,每月减少偏差考核费用30-50万元。项目经验表明,数据质量优化、参数调优及与业务目标对齐是关键成功因素,该技术路线具有可复制性,为风光基地预测精度提升提供了有效

专注AI大模型,软件混淆,授权 264

【WRF-Chem Emissions教程第一期】WRF-Chem 排放概述

WRF-Chem 排放概述

WW、forever的博客 852

Android数据存储——SharedPreferences

Android数据存储——SharedPreferences 一、数据存储选项:Data Storage ——Storage Options【重点】 1、Shared PreferencesStore private primitive data in key-value pairs.保存简单的键值对数据。2、Internal StorageStore priv

luffy的专栏 1859

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android数据存储之SharedPreferences

SharedPreferences是SDK中的一个自带类,可以完成简单的数据存储。 特点: 1.是一种轻量级的数据存储方式 2.本质是基于XML(key-value)的形式存储的 3.通常用于存储一些简单的配置信息,如用户名和密码 操作: 1.读取数据:SharedPreferences的对象来完成 2.更新数据:Editor的接口对象来完成 代码实现:

ghw_study的专栏 641

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

安卓SharedPreferences类的使用

1 package com.lidaochen.phonecall; 2 3 import android.content.Intent; 4 import android.content.SharedPreferences; 5 import android.net.Uri; 6 import android.os.Environment; 7 impo...

weixin_30726161的博客 164

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android数据存储方式SharedPreferences

 除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPrefere...

choulaowu8055的博客 113

3.19学习内容-Android数据存储:SharedPreferences存储

一、什么是SharedPreferences存储?   1、SharedPreferences是Android平台上轻量级的存储类,用来存储少量数据时简单、便捷(如:保存记住密码状态,设置开关状态等)。  2、Key-value形式存储数据,可以存储的数据类型:String、float、int、long、boolean。  3、存储位置在/data/data/&lt;包名&gt;/shared_p...

prettylife_sxm的博客 322

Android之SharedPreferences权限

import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; public class PermissionActivity extends Activity { private final int[] MODES=new int[]{ ...

weixin_30426065的博客 658

安卓SharedPreferences存储

安卓SharedPreferences存储 activity_main.xml文件 <?xml version="1.0" encoding="utf-8"?> 《LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android” xmlns:app=“http://schemas.android.com/apk/res-auto” xmlns:tools=“http://schemas.android.com/tool

qq_45813983的博客 266

Android sharedPreferences util

package com.xxx.xxx.xxx.common; import android.content.SharedPreferences; import android.support.annotation.NonNull; import com.tcl.hotel.vod.VodHotelApplication; import static android.content.Cont...

Wedfrend的博客 375

数据存储与访问之——SharedPreferences

  使用SharedPreferences(保存用户偏好参数)保存数据, 当我们的应用想要保存用户的一些偏好参数,比如是否自动登陆,是否记住账号密码,是否在Wifi下才能 联网等相关信息,如果使用数据库的话,显得有点大材小用了!我们把上面这些配置信息称为用户的偏好 设置,就是用户偏好的设置,而这些配置信息通常是保存在特定的文件中!比如windows使用ini文件, 而J2SE中使用pro...

antangtong2499的博客 338

安卓开发_数据存储技术_SharedPreferences类

SharedPreferences类 供开发人员保存和获取基本数据类型的键值对。 该类主要用于基本类型,例如:booleans,ints,longs,strings。在应用程序结束后,数据仍旧会保存。 有两种方式可以获得SharedPreferences对象 1、getSharedPreferences(): 如果需要多个使用名称来区分的共享文件,则可以使用该方法,其第一个参数就...

defukwanmcth26174的博客 123

Base-Android快速开发框架(二)--数据存储之SharedPreferences

  对于App开发者,抽象来说,其实就是将数据以各种各样的方式展示在用户面前以及采集用户的数据。采集用户的数据包括用户的输入、触摸、传感器等,展示的数据通过网络来源于各业务系统,以及用户的 输入数据。在这个过程中,数据存储显得由为重要。这也是我做为开端讲解的目的。良好的运用数据存储,不仅的能有效减少访问服务器的次数、用户的流量,还能加快App的响应速度,甚至简化应用的业务逻辑。数据 ...

dengxi7116的博客 183

Android中SharedPreferences用法

1.SharedPreferences简介 为了保存软件的设置参数,Android 平台为我们提供了一个SharedPreferences 类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences 保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs 目录下。 2.获取...

weixin_30343157的博客 146
上一篇: Android多线程及异步处理问题
下一篇: Android中的android:layout_width和android:width区别
mywebstudy
博客等级 码龄15年 30粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值