Android中的Shared Preference (分享首选项) 详解

Shared Preference将一组原始数据的NVP(name-value pair)存储为命名首选项(named preference).

创建SharedPreferences类使用getSharedPreferences(), 并传入要SharedPreferences的名称;

修改SharedPreferences类使用SharedPreferences.Editor类, 通过调用SharedPreferences类的edit()方法, 获取对象;

使用SharedPreferences.Editor类的put<type>()方法进行修改相关的名称(name)的值(value);

使用SharedPreferences.Editor类的apply()方法进行异步保存;

注意:保存可以使用apply()方法和commit()方法, 但是apply()方法是首选.

apply()方法是异步保存, commit()方法是同步保存, 需要阻止调用线程, 判断返回, 所以优先选择apply()方法.

访问SharedPreferences类, 使用getSharedPreferences()方法, 即与创建类似;

使用SharedPreferences类的get<type>()方法, 返回保存的值, 需要一个命名(name), 即键(key), 和一个默认值, 当没有值时使用默认.

使用SharedPreferences类的getAll()方法, 返回所有映射, 可以通过contains()方法, 返回boolean类型, 判断是否存在.

具体参考Android API: http://[防禁用]developer.android.com/guide/topics/data/data-storage.html

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

代码:

package mzx.spike.earthquake.app;  

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;  

import java.util.Map;  

/**
 * Created by Spike on 2014/4/25.
 */
public class Test extends Activity {
    public static final String MY_PREFS = "MyPrefs";  

    @Override
    protected void onCreate(Bundle state){
        super.onCreate(state);  

        // Restore preferences
        SharedPreferences mySharedPreferences = getSharedPreferences(MY_PREFS, Activity.MODE_PRIVATE);
        SharedPreferences.Editor editor = mySharedPreferences.edit();  

        editor.putBoolean("isTrue", true);
        editor.putFloat("lastFloat", 1f);
        editor.putInt("wholeNumber", 2);
        editor.putLong("aNumber", 31);
        editor.putString("textEntryValue", "Not Empty");  

        editor.commit();  

        boolean isTrue = mySharedPreferences.getBoolean("isTrue", false);
        float lastFloat = mySharedPreferences.getFloat("lastFloat", 0f);
        int wholeNumber = mySharedPreferences.getInt("wholeNumber", 1);
        long aNumber = mySharedPreferences.getLong("aNumber", 0);
        String textEntryValue = mySharedPreferences.getString("textEntryValue", "");  

        Map<String, ?> allPreferences = mySharedPreferences.getAll();
        boolean containsLastFloat = mySharedPreferences.contains("lastFloat");
    }
}

作者:csdn博客 Spike_King

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 方法
, sharedpreferences
, editor
, 分享android
, apply
, android分享
, android首选项
, Android首选项框架
, Android判断app
android调用分享
sharedpreference、安卓sharedpreference、遍历sharedpreference、sharedpreference权限、清空sharedpreference,以便于您获取更多的相关知识。

时间: 2024-09-17 04:53:48

Android中的Shared Preference (分享首选项) 详解的相关文章

Android 中Crash时如何获取异常信息详解及实例

Android 中Crash时如何获取异常信息详解 前言: 大家都知道,Android应用不可避免的会发生crash,无论你的程序写的多完美,总是无法完全避免crash的发生,可能是由于Android系统底层的bug,也可能是由于不充分的机型适配或者是糟糕的网络状况.当crash发生时,系统会kill掉你的程序,表现就是闪退或者程序已停止运行,这对用户来说是很不友好的,也是开发者所不愿意看到的,更糟糕的是,当用户发生了crash,开发者却无法得知程序为何crash,即便你想去解决这个crash,

Android 中ViewPager重排序与更新实例详解

Android 中ViewPager重排序与更新实例详解 最近的项目中有栏目订阅功能,在更改栏目顺序以后需要更新ViewPager.类似于网易新闻的频道管理. 在重新排序之后调用了PagerAdapter的notifyDataSetChanged方法,发现ViewPager并没有更新,于是我开始跟踪源码,在调用PagerAdapter的notifyDataSetChanged方法后,会触发Viewpager的dataSetChanged方法. void dataSetChanged() { //

Android 中CheckBox的isChecked的使用实例详解

Android 中CheckBox的isChecked的使用实例详解 范例说明 所有的网络服务在User使用之前,都需要签署同意条款,在手机应用程序.手机游戏的设计经验中,常看见CheckBox在同意条款情境的运用,其选取的状态有两种即isChecked=true与isChecked=false. 以下范例将设计一个TextView放入条款文字,在下方配置一个CheckBox Widget作为选取项,通过Button.onClickListener按钮事件处理,取得User同意条款的状态. 当C

Android中View的炸裂特效实现方法详解_Android

本文实例讲述了Android中View的炸裂特效实现方法.分享给大家供大家参考,具体如下: 前几天微博上被一个很优秀的 Android 开源组件刷屏了 - ExplosionField,效果非常酷炫,有点类似 MIUI 卸载 APP 时的动画,先来感受一下. ExplosionField 不但效果很拉风,代码写得也相当好,让人忍不住要拿来好好读一下. 创建 ExplosionField ExplosionField 继承自 View,在 onDraw 方法中绘制动画特效,并且它提供了一个 att

Android 中SP与DP的区别实例详解_Android

从一开始写Android程序,就被告知这些常识 1.长度宽度的数值要使用dp作为单位放入dimens.xml文件中 2.字体大小的数值要使用sp作为单位,也放入dimens.xml文件中 然后,就没有然后了,仿佛潜台词就是说,你记住去用就行了. 偶然有一天,当我们阴差阳错地将字体写成了dp,也是可以工作,而且效果和sp一样. 这时候,就开始怀疑了,到底有啥区别呢,dp和sp有什么不同呢? 我们做个简单的Sample验证一下,如下,一个布局代码 <TextView android:layout_w

Android中RecyclerView的item宽高问题详解

前言 本文主要给大家介绍了关于Android中RecyclerView的item宽高问题的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 在创建viewholder传入的View时,如果不指定其viewgroup,就会出现宽高只包裹显示内容的问题. View view = LayoutInflater.from(context).inflate(R.layout.test_test,null); 上面的做法就会出问题 改成这样就可以正常显示设置的宽高 View vie

android中DatePicker和TimePicker的使用方法详解_Android

本文以实例讲述了android中DatePicker和TimePicker的使用方法,具体步骤如下: 下面是实现具体功能的代码,其中main.xml代码为: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width=&quo

Android中Handler Runnable与Thread的区别详解

转自: http://www.codeceo.com/article/android-handler-runnable-thread.html Android中Handler可以异步控制Runnable,那么这样做于Android中的Thread有什么区别呢?本文将通过多个角度来讲解这个问题,读完此文,相信你会对Android中的Handler Runnable与Thread有一个非常全面的了解. 在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Th

Android中内容观察者的使用---- ContentObserver类详解

 前言: 工作中,需要开启一个线程大量的查询某个数据库值发送了变化,导致的开销很大,后来在老大的指点下,利用了      ContentObserver完美的解决了该问题,感到很兴奋,做完之后自己也对ContentObserver做下总结.             ContentObserver--内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于    数据库技术中的触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会