Android SharedPreferences存储用法详解

先看Demo运行效果

SharedPreferences详解

SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出.

SharedPreferences提供了java常规的Long、Int、String等类型数据的保存接口.

SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问。

提示最终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好.

SharedPreferences数据的四种操作模式

Context.MODE_PRIVATE
Context.MODE_APPEND
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入

SharedPreferences使用步骤

SharedPreferences的使用非常简单,使用SharedPreferences保存key-value对的步骤如下:

  (1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定.
  (2)使用SharedPreferences接口的edit获得SharedPreferences.Editor对象.
  (3)通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法.
  (4)通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作.

具体代码的书写流程为:

 A、存放数据信息

1、打开Preferences,名称为config,如果存在则打开它,否则创建新的Preferences
SharedPreferencesconfig= getSharedPreferences(“config”, 0);
2、让config处于编辑状态
SharedPreferences.Editor editor =config.edit();
3、存放数据
editor.putString(“name”,”ATAAW”);
editor.putString(“URL”,”ATAAW.COM”);
4、完成提交
editor.commit();

B、读取数据信息
1、获取Preferences
SharedPreferencesconfig= getSharedPreferences(“config”, 0);
2、取出数据
String name =config.getString(“name”,”默认值”);
String url = config.getString(“URL”,”default”);
以上就是Android中SharedPreferences的使用方法

demo的实现

MainActivity布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context="com.duanlian.sharedpreferencesdemo.MainActivity"> 

 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="50dp"> 

 <TextView
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:gravity="center"
  android:text="用户名"
  android:textSize="23sp" /> 

 <EditText
  android:id="@+id/username"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
 </LinearLayout>
 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="50dp"> 

 <TextView
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:gravity="center"
  android:text="密 码"
  android:textSize="23sp" /> 

 <EditText
  android:id="@+id/password"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
 </LinearLayout>
 <Button
 android:onClick="save"
 android:layout_width="match_parent"
 android:layout_height="50dp"
 android:text="保存信息"/>
 <Button
 android:onClick="change"
 android:layout_width="match_parent"
 android:layout_height="50dp"
 android:text="跳转"/>
</LinearLayout>

ActivityA的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context="com.duanlian.sharedpreferencesdemo.MainActivity"> 

 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="50dp"> 

 <TextView
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:gravity="center"
  android:text="用户名"
  android:textSize="23sp" /> 

 <EditText
  android:id="@+id/username"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
 </LinearLayout>
 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="50dp"> 

 <TextView
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:gravity="center"
  android:text="密 码"
  android:textSize="23sp" /> 

 <EditText
  android:id="@+id/password"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
 </LinearLayout>
 <Button
 android:onClick="get"
 android:layout_width="match_parent"
 android:layout_height="50dp"
 android:text="得到信息"/>
</LinearLayout>

MainActivity里存储的具体实现
都是按照上面写的步骤来实现的,最后一定要提交

package com.duanlian.sharedpreferencesdemo; 

import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText; 

public class MainActivity extends AppCompatActivity { 

 private EditText passWors;
 private EditText userName;
 private SharedPreferences preferences;
 private SharedPreferences.Editor editor; 

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 initView();
 } 

 private void initView() {
 userName = (EditText) findViewById(R.id.username);
 passWors = (EditText) findViewById(R.id.password);
 //1,实例化SharedPreferences对象,参数1:保存的名字,参数2:保存的模式MODE_PRIVATE私有的
 preferences = getSharedPreferences("config", MODE_PRIVATE);
 //2,让SharedPreferences处于可编辑状态
 editor = preferences.edit(); 

 } 

 /**
 * 保存按钮的监听
 * @param view
 */
 public void save(View view) {
 //拿到用户输入的数据
 String name = userName.getText().toString().trim();
 String pwd = passWors.getText().toString().trim();
 //3,储存数据,类似于map
 editor.putString("name", name);
 editor.putString("pwd", pwd);
 //4,提交
 editor.commit(); 

 } 

 /**
 * 跳转的点击监听
 * @param view
 */
 public void change(View view) {
 Intent intent = new Intent(MainActivity.this, ActivityA.class);
 startActivity(intent); 

 }
}

取出数据的实现

package com.duanlian.sharedpreferencesdemo; 

import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText; 

public class ActivityA extends AppCompatActivity { 

 private EditText userName;
 private EditText passWord;
 private String name;
 private String pwd; 

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_a);
 //得到数据
 //1,得到SharedPreferences对象
 SharedPreferences preferences = getSharedPreferences("config", 0);
 //2,取出数据
  name = preferences.getString("name","");
  pwd = preferences.getString("pwd", "");
 userName = (EditText) findViewById(R.id.username);
 passWord = (EditText) findViewById(R.id.password); 

 } 

 /**
 * 得到数据按钮的监听
 * @param view
 */
 public void get(View view) {
 userName.setText(name);
 passWord.setText(pwd);
 }
}

demo下载地址:SharedPreferences

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android本地存储SharedPreferences详解

    Android本地存储SharedPreferences详解 存储位置 SharedPreferences数据保存在: /data /data/<package_name> /shared_prefs 文件夹下,以XML格式保存,根元素为:<map />.文件名称为获取SharedPreferences实例时传递的參数值. <map> <int name="key" value="value" /> <strin

  • Android SharedPreferences存储的正确写法

    SharedPreferences 特点 即便是Android小白都知道的SharedPreferences的用法,这是保存数据最简便的方法,但是不处理好的话后期维护将是一个巨大的坑.那么该如何处理好SharedPreferences才方便维护呢.先从它的特点开始入手吧. 通过Context.getSharedPreferences()获取的SharedPreferences是一个单例 SharedPreferences.edit()每次都会创建一个新的编辑对象,commit()之前一切改动都无

  • 简介Android应用中sharedPreferences类存储数据的用法

    在Android开发中,经常会遇到这样一种情况,即需要将用户偏好设置(如用户偏好的app色彩主题).与特定登录用户相关的设置(如不同登陆用户的偏好).整个app的生命周期内的设置(如首次登陆显示介绍页)存储在用户本地,那么首先考虑使用sharedPreferences.这是Android中专门用来存储轻量级键值对数据的类,会在本地以xml文件形式存储. 一. 运行机制 接口:SharedPreferencesImpl在该接口中,定义了一个Editor接口.一个edit方法.多个get方法.一个监

  • Android通过SharedPreferences实现自动登录记住用户名和密码功能

    最近Android项目需要一个自动登录功能,完成之后,特总结一下,此功能依靠SharedPreferences进行实现. SharedPreferences简介 SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data/data/<包名>/shared_prefs目录下.SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现

  • Android学习之使用SharedPreferences存储应用程序数据

    本文介绍了SharedPreferences保存应用程序数据的具体步骤,供大家参考,具体内容如下 1.SharedPreferences的简单介绍 应用程序在运行的时候,可能会随着用户的使用而保持该用户的配置信息,如上次播放时的eq设置,音量设置,上网的cookies信息等等,这些小量 的信息可以通过SharedPreferences来保持,通过SharedPreferences保持的数据为一个XML文件,位于应用程序的私有文件夹. 2.具体操作方法 获取SharedPreferences,可以

  • Android 跨进程SharedPreferences异常详解

    Android 跨进程SharedPreferences异常详解 Context c = null; try { c = context.createPackageContext(PREFERENCE_PACKAGE, Context.CONTEXT_IGNORE_SECURITY); } catch (NameNotFoundException e) { e.printStackTrace(); } if (c != null) { SharedPreferences infoSp = c.g

  • Android应用中使用SharedPreferences类存储数据的方法

    在Android系统中提供了多种存储技术.通过这些存储技术可以将数据存储在各种存储介质上.比如sharedpreferences可以将数据保存着应用软件的私有存储区,这些存储区的数据只能被写入这些数据的软件读取.当然Android还支持文件存储.SQLite数据库和Content Provider.在这里我们将对sharedpreferences存储方式进行介绍. SharedPreferences是一种轻量级的数据存储方式,学过Web开发的同学,可以想象它是一个小小的Cookie.它可以用键值

  • Android SharedPreferences实现记住密码和自动登录界面

    SharedPreferences介绍: SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在"/data/data<package name>/shared_prefs"目录下. SharedPreferences的用法: 由于SharedPreferences是一个接口,而且在这个接口里没有提供写入数据和读取数据的能力.但它是通过其Editor接口中的一些方法来操作Shared

  • Android SharedPreferences四种操作模式使用详解

    Android  SharedPreferences详解 获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法 2 调用Activity对象的getPreferences()方法 两种方式的区别: 调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享. 调用Activity对象的getPreferences()方法获得的Sh

  • Android SharedPreferences存储用法详解

    先看Demo运行效果 SharedPreferences详解 SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中:当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出. SharedPreferences提供了java常规的Long.Int.Strin

  • Android 文件存储与SharedPreferences存储方式详解用法

    目录 持久化技术简介 文件存储 1. 将数据存储到文件中 2. 从文件中读取数据 SharedPreferences 存储 1. 将数据存储到 SharedPreferences 中 2. 从 SharedPreferences 中读取数据 持久化技术简介 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或计算机关机的情况下,这些数据也不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备的数据是处于持久状态的.持久化技术提供了一种机制,可以让数据在瞬时状态和持久状

  • Android SQLite基本用法详解

    目录 一.SQLite的介绍 1.SQLite简介 2.SQLite的特点: 3.SQLite数据类型 二.SQLiteDatabase的介绍 1.打开或者创建数据库 2.创建表 3.插入数据 4.删除数据 5.修改数据 6.查询数据 7.删除指定表 三. SQLiteOpenHelper 1.onCreate(SQLiteDatabase) 2.  onUpgrade(SQLiteDatabase,int,int)  3.  onOpen(SQLiteDatabase): 一.SQLite的介

  • Android SurfaceView基础用法详解

    Android 游戏开发框架核心组件 核心组件介绍 SurfaceView 介绍 SurfaceView 介绍 SurfaceView 就是带 Surface 的 view,它是一个 View,是 View 的子类,所以和其他 View 一样,可以在屏幕上展示东西接收用户输入,具有 View 的生命周期回调函数,如 onMeasure.onLayout.onDraw.onTouchEvent 等 SurfaceView 带有独立的 Surface(独立与 window 的 surface),这可

  • Android之Spinner用法详解

    目录 一.Spinner的两种展示样式 二.Spinner相关方法 三.Spinner用法举例 XML布局文件activity_main.xml 选中文字样式item_select.xml 列表其他文字样式item_dropdown.xml Java代码MainActivity.java 四.dropdown模式下的列表分割线 一.Spinner的两种展示样式 下拉列表的展示方式有两种,一种是在当前下拉框的正下方展示列表,此时把spinnerMode属性设置为dropdown;另一种是在页面中部

  • Android持久化技术之SharedPreferences存储实例详解

    本文实例讲述了Android持久化技术之SharedPreferences存储.分享给大家供大家参考,具体如下: 1.SharedPreferences存储 在前面一篇文章<Android持久化技术之文件的读取与写入实例详解>中,我们介绍了Android持久化技术的文件的读取与写入.在本文中,继续介绍Android持久化技术另外一个SharedPreferences存储. (1)SharedPreferences存储方式是基于key-value的,通过key可以找到对应的value. (2)支

  • Android中Parcel用法详解

    本文实例讲述了Android中Parcel用法.分享给大家供大家参考,具体如下: Android 中Parcel 的使用,他是一个存储基本数据类型和引用数据类型的容器,在andorid 中通过IBinder来绑定数据在进程间传递数据. Parcel parcel = Parcel.obtain();// 获取一个Parcel 对象 下面就可以对其进行方法进行操作了,createXXX(),wirteXXX(),readXXX(), 其中dataPosition(),返回当前Parcel 当前对象

  • Android WebView组件用法详解

    本文实例讲述了Android WebView组件用法.分享给大家供大家参考,具体如下: 如果想WebView能够访问网络,必须在AndroidManifest.xml里面添加权限 <uses-permission android:name="android.permission.INTERNET" /> main.xml很简单,就是一个WebView <?xml version="1.0" encoding="utf-8"?&g

  • android文件管理器用法详解

    很久没有写东西了,鉴于某某同学文件管理器不会,这里简单介绍一下,同时写一个demon,参考了网上别人写的代码,自己也学习学习,研究研究. 首先所谓文件管理器,看起来就是一个列表,列表里面是文件夹或者文件,首先把布局写出来,我想在最上方的左边显示文件的路径,右边显示该路径下的文件个数,其实还是一个遍历文件,然后用列表显示出来的问题.下面是ListView,用来显示文件列表.下面是运行的效果图: 主界面的布局文件如下: <?xml version="1.0" encoding=&qu

  • Android android:exported = true 用法详解

    Android相关属性的介绍:android:exported = true 在Activity中该属性用来标示:当前Activity是否可以被另一个Application的组件启动:true允许被启动:false不允许被启动. android:exported 是Android中的四大组件 Activity,Service,Provider,Receiver 四大组件中都会有的一个属性. 总体来说它的主要作用是:是否支持其它应用调用当前组件. 例如: <activity android:exp

随机推荐