【Android】19.1 SharedPreferences类
分类:C#、Android、VS2015;
创建日期:2016-03-05
一、简介
SharedPreferences:简单共享存储首选项。实际上就是用加密的内部文件保存所有页面都能访问的一系列“name/value”组成的数据集合,比如利用它保存系统参数配置等,然后再写个类处理它,并为其规定一些读写权限。
SharedPreferences是Android平台上一种轻量级的数据共享存储方式,一般利用它将应用程序的相关信息(比如应用程序配置、共享配置等)持久性地保存在内部文件系统中,以便程序能自动读取这些信息。当然也可以用它保存你自己的应用程序私有信息,诸如启动欢迎词、用户选择的界面风格等。
Android是通过SharedPreferences类将NVP(Name-Value Pair,即“名称-值”对)保存在内部文件系统中的,而且完全屏蔽了对这种文件的操作过程,就是说,你只能通过SharedPreferences类处理这些数据,无法通过一般的文件操作来读取或写入它。另外,如果NVP具有相同的SharedPreferences,那么它将保存在同一个内部文件中。
这种封装方式的好处是:除了方便系统管理(能利用它实现不同应用程序之间的数据共享)以外,开发人员还可以直接对NVP进行操作,同时,也限制了数据的访问权限,保证了共享数据的一致性和安全性。
SharedPreferences支持以下访问模式:
- Private:私有模式。只有创建SharedPreferences的应用程序自身才有读取和写入SharedPreferences的权限。
- WorldReadable:全局读模式。除了创建程序自身有读取和写入权限以外,其他应用程序也有读取的权限,但没有写入的权限。
- WorldWriteable:全局写模式。所有程序都可以对其进行写入操作,但没有读取的权限。
利用SharedPreferences访问持久性存储的数据时,必须指明采用的是哪种模式。
在继承自Activity的类中,通过当前实例的ContextWraper对象的GetSharedPreferences()方法可获取一个SharedPreferences对象,并在参数中通过Android.Content.FileCreationMode枚举指明是哪种访问模式。例如:
ISharedPreferences p = GetSharedPreferences("mydemos", FileCreationMode.Private);
其中,“mydemos”是要创建或保存的文件名,你可以根据需要创建或保存多个类似这样的文件,只要在这个参数中指定不同的文件名就行了。
得到SharedPreferences对象后,就可以利用该对象的All属性读取这些NVP,也可以利用Edit()方法对其进行修改(需要有对应的权限),修改后调用Commit()方法提交即可。
如果你希望访问其他应用程序共享出来的SharedPreference(前提是它将访问模式设置为包含全局读),通过Context获取对应的SharedPreference对象即可。
二、例19-1—首选项基本用法
运行截图

设计步骤
1、添加ch1901Main.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px">
<fragment
android:name="MyDemos.MyDemosFragment"
android:tag="mydemos"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:text="写入"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ch1901_btnWrite" />
<Button
android:text="读取"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ch1901_btnRead" />
<TextView
android:text="执行结果:"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ch1901_textView1"
android:layout_marginLeft="15dp"
android:layout_marginTop="20dp"
android:layout_marginRight="15dp" />
</LinearLayout>
2、添加ch1901MainActivity.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget; namespace MyDemos.SrcDemos
{
[IntentFilter(new[] { Android.Content.Intent.ActionMain }, Categories = new[] { ch.MyDemosCategory })]
[Activity(Label = "【例19-1】 首选项基本用法")]
public class ch1901MainActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.ch1901Main);
var txt = FindViewById<TextView>(Resource.Id.ch1901_textView1);
var btnWrite = FindViewById<Button>(Resource.Id.ch1901_btnWrite);
btnWrite.Click += delegate
{
using (ISharedPreferences p = GetSharedPreferences("mydemos1", FileCreationMode.Private))
{
var p1 = p.Edit();
p1.Clear();
p1.PutInt("v1", );
p1.PutString("v2", "hello");
p1.Commit();
txt.Text = "写入完毕!";
}
};
var btnRead = FindViewById<Button>(Resource.Id.ch1901_btnRead);
btnRead.Click += delegate
{
using (ISharedPreferences p = GetSharedPreferences("mydemos1", FileCreationMode.Private))
{
string s = "";
foreach (var v in p.All)
{
s += $"key:{v.Key},value:{v.Value}\n";
}
txt.Text = $"读取的结果:\n{s}";
}
};
}
}
}
【Android】19.1 SharedPreferences类的更多相关文章
- Android学习之SharedPreferences类
SharedPreferences类 android.content.SharedPreferences 类概括: 访问和修改由函数getSharedPreferences(String,int)返回 ...
- Android 中替代 sharedpreferences 工具类的实现
Android 中替代 sharedpreferences 工具类的实现 背景 想必大家一定用过 sharedpreferences 吧!就我个人而言,特别讨厌每次 put 完数据还要 commit. ...
- (转载)实例详解Android快速开发工具类总结
实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...
- 用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM(四)——Android端Http访问类(转)
本章目的 在上一章中,我们利用Hibernate Tools完成了Android Model层的建立,依赖Hibernate Tools的强大功能,自动生成了Model层.在本章,我们将继续我们的项目 ...
- 29个android开发常用的类、方法及接口
在安卓开发中,我们常常都需要借助各种各样的方法.类和接口来实现相关功能.提升开发效率,但对于初学者而言,什么时候该用什么类.方法和接口呢?下面小编整理了29个,日常开发中比较常用的类.方法.接口及其应 ...
- 【转】深入理解Android中的SharedPreferences
SharedPreferences作为Android中数据存储方式的一种,我们经常会用到,它适合用来保存那些少量的数据,特别是键值对数据,比如配置信息,登录信息等.不过要想做到正确使用SharedPr ...
- Android 通过 Intent 传递类对象或list对象
(转:http://www.cnblogs.com/shaocm/archive/2013/01/08/2851248.html) Android中Intent传递类对象提供了两种方式一种是 通过实现 ...
- Android应用开发SharedPreferences存储数据的使用方法
Android应用开发SharedPreferences存储数据的使用方法 SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的 ...
- 命令行下使用javah命令生成.h文件,出现“错误: 无法访问android.app.Activity 找不到android.app.Activity的类文件”的解决方法
在学习NDK中,当我在项目的bin/classes目录下使用javah命令生成头文件时,出现了“错误: 无法访问android.app.Activity 找不到android.app.Activity ...
随机推荐
- Discuz常见大问题-如何使用图片轮播器
最简单的办法是用插件,在应用-插件中电机对应插件的设置(比如使用柒瑞幻灯图片展插件) 在展示图片参数设置中,按照要求放你要的设置(标题,注释,高清大图,缩略小兔,URL地址)注意一个都不能少,标题和注 ...
- web开发学习之旅
过段时间要去实习,提前问了下老师我要准备哪些知识. 2015年3月19日,老师告诉我的,ionic Framework,Yii Framework,AngularJS,还有一些前端开发知识. 我除了听 ...
- 触发器二(DML触发器)(学习笔记)
DML触发器(语句触发器) 由DML语句进行触发,当用户执行了INSERT,UPDATE,DELETE操作时就会触发操作 示例一.只有在每个月的10日才允许办理,新员工入职与离职,其他时间不允许增加和 ...
- windows XP系统搜索无线网络时提示“windows无法配置此无线连接”,如何处理?
转自:http://support1.lenovo.com.cn/lenovo/wsi/htmls/detail_12839009034375918.html 文章编号:C191612 201 ...
- STM32F429I-DISCO 和GPS的亲热接触
第27章 GPS LCD显示教程 本期教程为大家解说GPS Global Positioning System(全球定位系统)的使用,.GPS是由美国国防部研制建立的一种具有全方位.全天候.全时段.高 ...
- lnmp环境的使用教程
lnmp环境的使用 安装的软件都安装到了:/usr/local 管理nginx service nginx start|stop|restart|reload 管理mysql 直接执行mysql即可登 ...
- IDC 知识库
http://www.51idc.com/help/supportHelp.html Host key verification failed解决IIS错误信息--另一个程序正在使用此文件,进程无法访 ...
- windows命令行设置IP与DNS
用dos命令修改IP等本地连接属性 平时我们改IP通常都在是窗口界面本地连接直接修改, 那在命令行也可以设置IP地址?当然可以,这里要用到netsh命令 .点击“开始”->“运行”,输入“cmd ...
- Android C/C++ 开发
标准的做法是 把 src 放到 /Android/develop/ 目录下去,然后建立 Android.mk 文件, 然后 make modue ...., 但是,这种方式 太麻烦. 下面介绍一种方 ...
- js 随机变换图片
<div style="position:absolute;left:40%;top:10%;border-style:dotted"> <img src=&qu ...