Android中SharedPreference详解及简单实例

 更新时间:2017年09月25日 11:20:17   作者:zhangqijie001  
这篇文章主要介绍了 Android中SharedPreference详解及简单实例的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

 Android中SharedPreference详解

   SharedPreference是Android提供的一种轻量级的数据存储方式,主要用来存储一些简单的配置信息,例如,默认欢迎语,登录用户名和密码等。其以键值对的方式存储,使得我们能很方便进行读取和存入。

     SharedPreference 文件保存在/data/data/<package name>/shared_prefs 路径下(如/data/data/com.android.alarmclock/shared_prefs/com.android.text_preferences.xml),通过cat命令可以查看文件,如:

     通过Activity自带的getSharedPreferences方法,可以得到SharedPreferences对象。

   public abstract SharedPreferences getSharedPreferences (String name, int mode);

     name:表示保存后 xml 文件的名称

     mode:表示 xml 文档的操作权限模式(私有,可读,可写),使用0或者MODE_PRIVATE作为默认的操作权限模式。 

     1.数据读取:

     通过SharedPreferences对象的键key可以获取到对应key的键值。对于不同类型的键值有不同的函数:

getBoolean,getInt,getFloat,getLong.
   public abstract String getString (String key, String defValue);

     2.数据存入:

     数据的存入是通过SharedPreferences对象的编辑器对象Editor来实现的。通过编辑器函数设置键值,然后调用commit()提交设置,写入xml文件。

   public abstract SharedPreferences.Editor edit ();
   public abstract SharedPreferences.Editor putString (String key, String value);
   public abstract boolean commit ();

 下面一个实例显示一个TextView,上面显示用户使用该应用的次数。

效果图如下:

源代码如下:

main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:orientation="vertical" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent"> 
   
  <TextView  
    android:id="@+id/textview" 
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:text="@string/hello"/> 
   
</LinearLayout> 

TestSharedPreferences.java:

package com.android.test; 
import android.app.Activity; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.widget.TextView; 
public class TestSharedPreferences extends Activity { 
  /** Called when the activity is first created. */ 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
     
    SharedPreferences mSharedPreferences = getSharedPreferences("TestSharedPreferences", 0); 
//    SharedPreferences mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
     
    int counter = mSharedPreferences.getInt("counter", 0); 
     
    TextView mTextView = (TextView)findViewById(R.id.textview); 
    mTextView.setText("This app has been started " + counter + " times."); 
     
    SharedPreferences.Editor mEditor = mSharedPreferences.edit(); 
    mEditor.putInt("counter", ++counter); 
    mEditor.commit(); 
     
  } 
} 

几点说明:

1.SharedPreferences的获取有两种方法:

一是上面提到的通过Activity自带(本质来讲是Context的)的getSharedPreferences方法,可以得到SharedPreferences对象。这种方法的好处是可以指定保存的xml文件名。

另一种是通过PreferenceManager.getSharedPreferences(Context)获取SharedPreferences对象。这种方法不能指定保存的xml文件名,文件名使用默认的:<package name>+"_preferences.xml"的形式,不过如果在一个包里面采用这种方式需要保存多个这样的xml文件,可能会乱掉。建议采用第一种指定xml文件名的形式。

2.数据的存入必须通过SharedPreferences对象的编辑器对象Editor来实现,存入(put)之后与写入数据库类似一定要commit。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Android中巧妙的实现缓存详解

    Android中巧妙的实现缓存详解

    采用缓存,可以进一步大大缓解数据交互的压力,有的时候为了快速查询会被多次调用的数据,或者构建比较废时的实例,我们一般使用缓存的方法。无论大型或小型应用,灵活的缓存可以说不仅大大减轻了服务器的压力,而且因为更快速的用户体验而方便了用户。下面来一起看看吧。
    2016-11-11
  • AndroidStudio安全管理签名文件keystroe和签名密码(星空武哥)

    AndroidStudio安全管理签名文件keystroe和签名密码(星空武哥)

    我们在使用AndroidStudio进行release版的apk签名的时候,往往都是将签名文件keystore放在项目中,密码写在build.gradle中,keystore和密码就随着代码上传到了Git仓库中了,这样往往很不安全,因为这样被人获取
    2017-09-09
  • Android中Intent传递对象的3种方式详解

    Android中Intent传递对象的3种方式详解

    这篇文章给大家介绍了Android中Intent传递对象的3种方式,分别是Serializable 方式、Parcelable 方式以及JSON 方式,有需要的朋友们可以一起参考借鉴,下面来一起看看吧。
    2016-09-09
  • Android中Glide加载图片并实现图片缓存

    Android中Glide加载图片并实现图片缓存

    本篇文章主要介绍了Android中Glide加载图片并实现图片缓存,这里和大家简单的分享一下Glide的使用方法以及缓存 ,有兴趣的可以了解一下。
    2017-03-03
  • android实现搜索功能并将搜索结果保存到SQLite中(实例代码)

    android实现搜索功能并将搜索结果保存到SQLite中(实例代码)

    这篇文章主要介绍了android实现搜索功能并将搜索结果保存到SQLite中,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Android自定义相机界面的实现代码

    Android自定义相机界面的实现代码

    这篇文章主要为大家详细介绍了Android自定义相机界面的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android开发笔记XML数据解析方法及优缺点

    Android开发笔记XML数据解析方法及优缺点

    XML数据是一种常见的数据格式,Android开发中需要对其进行解析。常用的XML解析方式有DOM、SAX、Pull和Json等,每种方式都有其优缺点。开发者可以根据具体需求选择合适的解析方式,提高数据解析效率和性能
    2023-05-05
  • Android自定义View 使用PathMeasure简单模仿系统ProgressBar(四)

    Android自定义View 使用PathMeasure简单模仿系统ProgressBar(四)

    这篇文章主要为大家详细介绍了Android自定义View,使用PathMeasure简单模仿系统ProgressBar,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • java从输入流中获取数据并返回字节数组示例

    java从输入流中获取数据并返回字节数组示例

    这篇文章主要介绍了java从输入流中获取数据并以字节数组返回,这是一个常用的方法,以后可以直接拿来用。这种输入流可以来自Android本地,也可以来自网络
    2014-01-01
  • Android自定义控件实现优雅的广告轮播图

    Android自定义控件实现优雅的广告轮播图

    这篇文章主要为大家详细介绍了Android自定义控件实现优雅的广告轮播图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03

最新评论