Android数据存储之SharedPreferences存储
安卓系统为应用提供了系统级的配置存储方案,它就是靠SharedPreferences接口来实现的,该接口存储的所有信息都是以名值对的形式保存,但其保存的数据类型也仅限于基本数据类型,如字符串、整形、布尔型等。这些配置最后会保存在一个XML文件中,每次打开应用时,这些保存的信息就会被加载进来,我们也可以在“管理应用程序”中将这些缓存数据清除。
SharedPreferences接口的常用方法如下:
| No | 方法 | 类型 | 描述 |
| 1 | public abstract SharedPreferences.Editor edit() | 普通 | 使其可编辑,并获得编辑器对象 |
| 2 | public abstract boolean contains(String key) | 普通 | 判断key是否存在 |
| 3 | public abstract Map<String,?>getAll() | 普通 | 获得全部数据 |
| 4 | public abstract boolean getBoolean(String key, boolean defValue) | 普通 | 获得boolean值,若无,则设为defValue |
| 5 | public abstract float getFloat(String key, float defValue) | 普通 | 获得float值,若无,则设为defValue |
| 6 | puclic abstract int getInt(String key, int defValue) | 普通 | 获得int值,若无,则设为defValue |
| 7 | public abstract long getLong(String key, long defValue) | 普通 | 获得long值,若无,则设为defValue |
| 8 | public abstract String getString(String key, String defValue) | 普通 | 获得Sting值,若无,则设为defValue |
SharedPreferences接口的方法getXxx()用来获取已经存储的值,而要写入新的名值对则需要获得它的编辑器接口SharedPreferes.Editor接口,即调用SharedPreferences接口的edit()方法即可获得。
SharedPreferences.Editor接口的常用方法如下:
| No | 方法 | 类型 | 描述 |
| 1 | public abstract SharedPreferences.Editor clear() | 普通 | 清除所有数据 |
| 2 | public abstract boolean commit() | 普通 | 提交更新的数据 |
| 3 | public abstract SharedPreferences.Editor putBoolean(String key, Boolean value) | 普通 | 保存boolean型数据 |
| 4 | public abstract SharedPreferences.Editor putFloat(String key, float value) | 普通 | 保存float型数据 |
| 5 | public abstract SharedPreferences.Editor putInt(String key, int value) | 普通 | 保存int型数据 |
| 6 | public abstract SharedPreferences.Editor putLong(String key, long value) | 普通 | 保存long型数据 |
| 7 | public abstract SharedPreferences.Editor putString(String key, String value) | 普通 | 保存String型数据 |
| 8 | public abstract SharedPreferences.Editor remove(String key) | 普通 | 删除指定key的数据 |
由于SharedPreferences和SharedPreferences.Editor都是接口,所以要想获得他们的实例化对象,还需要Activity类的方法和常量的支持
public static final int MODE_PRIVATE, public static final int MODE_WORLD_READBALE, public static final int MODE_WORLD_WRITEBALE常量和public SharedPreferences getSharedPreferences(String name, int mode)(其中name指保存的文件名称,mode指操作的模式)。
下面以一个实例加以说明:
package com.wl.testsharedpreferences; import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.TextureView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView; public class MainActivity extends Activity implements OnClickListener { Button btn1,btn2;
SharedPreferences sp = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2); btn1.setOnClickListener(this);
btn2.setOnClickListener(this); sp = getSharedPreferences("mysp", Activity.MODE_PRIVATE); //获得SharedPreferences实例
} @Override
public void onClick(View view) {
// TODO Auto-generated method stub
TextView tv = (TextView) findViewById(R.id.tv);
if(view == btn1) {
SharedPreferences.Editor editor = sp.edit();
editor.putString("author", "xiaowang");
editor.putInt("age", 25);
editor.commit();
tv.setText("Write successfully!");
} else if(view == btn2) {
tv.setText(sp.getString("author", "xiaozhang") + "," + sp.getInt("age", 20));
}
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/> <Button
android:id="@+id/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/btn1"/> //string/btn1为"写名值对" <Button
android:id="@+id/btn2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/btn2"/> //string/btn2为"读名值对" </LinearLayout>
从以上例子可以很容易的掌握SharedPreferences的用法。
注:当我们写入名值对后,一定记得要调用commit()函数,不然所写入的并未提交,也就无从读出了。
Android数据存储之SharedPreferences存储的更多相关文章
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览
Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (一) —— 总览 作为一个完成的应用程序,数据存储操作是必不可少的. ...
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences
除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider
ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制.一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制.并且此种方式忽略了底层的数据存储实现,Cont ...
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是: NULL: 空值 INTEGER: 整数 REAL: 浮点数 TEXT: 字符串 BLOB: 大数据 在SQLite中, ...
- (转)Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences
除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...
- Android入门(九)文件存储与SharedPreferences存储
原文链接:http://www.orlion.ga/578/ Android系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件存储.SharedPreference存储以及数据库存储.当然, ...
- Android数据的四种存储方式
作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File. ...
- [Android]Android数据的四种存储方式
存储方式 Android提供以下四种存储方式: SharePreference SQLite File ContentProvider Android系统中数据基本都是私有的,一般存放在“data/d ...
- [转][Android]Android数据的四种存储方式
android.database.sqlite类 SQLiteQueryBuilder java.lang.Object android.database.sqlite.SQLiteQueryBuil ...
随机推荐
- app跳转openURL,兼容方法
- (void)openScheme:(NSString *)scheme { UIApplication *application = [UIApplication sharedApplicat ...
- Windows自带.NET Framework版本大全
The following is a complete list of which version of the .NET Framework is included in which version ...
- ANDROID开发之问题积累及解决方案(二)
错误:“Binary XML file line # : Error inflating class” 原因:此异常是布局文件中有错引起的,那么返回到布局文件中看看. <?xml version ...
- iOS中编写单例类的心得
单例 1.认识过的单例类有哪些: NSUserDefaults.NSNotificationCenter.NSFileManager.UIApplication 2.单例类 单例类某个类在代码编写时使 ...
- ruby Matrix 输出 格式化
require 'matrix' class Matrix def to_pretty_s s = "" i = 0 while i < self.column_size s ...
- Xcode导航栏不显示模拟器选择框ToolBar
不显示ToolBar的小伙伴可能就是下面的样子: 全屏后就可以看到ToolBar,像下面这样: 刚开始还以为是模拟器没装,还傻不拉几的去下载模拟器,后来才发现,只要下面的操作即可显示 点击" ...
- C/C++入门基础----指针(1)
指针其实就是一个变量, 和其他类型的变量一样.在32位计算机上, 指针占用四字节的变量.指针与其他变量的不同就在于它的值是一个内存地址,指向内存的另外一个地方, 指针能够直接访问内存和操作底层的数据, ...
- android studio 注释模板
File->Settings->Editor->File and Code Templates-> Templates->class Includes->File ...
- 微信web开发者工具初探
最近需要在微信企业号中挂接网页,之前也没有接触过微信开发,刚开始也不知道怎么调试,后来同事介绍使用“微信web开发者工具”,于是在网上下了一个,使用了一下的确很好用.它不仅支持Android和IOS同 ...
- 由Struts return SUCCESS引发的基础问题
该问题的最初来源,是源于Struts中的 return SUCCESS; 和 return "success"; 在Struts的配置文件struts.xml我们可以找到" ...