Android 数据存储——SharedPreference

作为一个完成的应用程序,数据存储操作是必不可少的,因此,Android系统提供了四种数据储存方式,分别是:SharedPreference、File、SQLite以及Content Provider。由于Android系统中,数据基本都是私有的,都是存放于"data/data/程序包名"目录下,所有要实现数据共享,正确方式使用Content Provider。

SQLite:SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatebase的类型,封装了一些操作数据库的API。

SharedPreference:除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置。

File:即常说的文件(I/O)存储方式,常用存储大量数量的数据,但是缺点是更新数据将是一件困难的事情。

ContentProvider:Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的互相私密的,所有此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频、视频、图片和通讯录,一般都可以采用此种方式进程存储。每个ContentProvider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享,就需要使用ContentProvider为这些数据定义一个URI,然后其他应用程序就通过Content Provider传入这个URI来对数据进行操作。

SharedPreference:是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来保存一些简单的配置信息。其存储位置在"data/data/程序包名/shared_prefs"目录下。SharedPreference对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。

SharedPreference对象与SQLite数据库相比,免去了创建数据库、创建表、写SQL语句等诸多操作,相对而言更加方便、简洁。但是SharedPreference也有其自身缺陷,比如其职能存储boolean、int、float、long和String五种简单的数据类型,比如其无法进行条件查询等。所有无论SharedPreference的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据这样的其他数据存储方式。

SharedPreference存储方式操作步骤

一、根据Context获取SharedPreference对象

  • 调用Context对象的getSharedPreference()方法,该方法获得的SharedPreference对象可以被同一个应用程序下的其他组件共享
  • 调用Activity对象的getPreference()方法,该方法获得的SharedPreference对象只能在该Activity中使用

二、利用SharedPreference对象中的edit()方法获得Editor对象

三、通过Editor对象存储key-value键值对数据

四、通过Editor对象的commit()方法提交数据

SharedPreference的四种操作模式

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用程序本身访问,在该模式下,写入的内容会覆盖原文件的内容

Context.MODE_APPEND:该模式会检查文件是否存在,存在就往文件中追加内容,否则就创建新文件

Context.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取

Context.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入

例子:——通过点击TextView,来获取SharedPreference保存的数据

AndroidManifest.xml——没有做任何修改,创建工程默认

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sharedpreferencedemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.sharedpreferencedemo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

activity_main.xml

<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:gravity="center"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</LinearLayout>

MainActivity.java

package com.example.sharedpreferencedemo;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

public class MainActivity extends Activity {
	private TextView textView;
	private SharedPreferences sharedPreferences;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /*1、获取SharedPreference对象,此参数一hello指定了保存的文件名称*/
        sharedPreferences = getSharedPreferences("hello", MODE_PRIVATE);
        /*2、存入数据,可以存入多种类型数据,数据通过key键值标记对应数据*/
        Editor editor = sharedPreferences.edit();
        editor.putString("string", "hello world.");
        editor.putInt("int", 10);
        editor.putBoolean("boolean", true);
        /*3、提交数据*/
        editor.commit();

        textView = (TextView)this.findViewById(R.id.textView);
        textView.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				//如果键值不存在,则返回第二个参数的数据
				String string = sharedPreferences.getString("string", "")
								+"\n"
								+sharedPreferences.getInt("int", 0)
								+"\n"
								+sharedPreferences.getBoolean("boolean", false);
				textView.setText(string);
				textView.setTextSize(20);
			}
		});
    }

}

下载程序

当运行此程序后,数据就保存在/data/data/com.example.sharedpreferencedemo/shared_prefs/hello.xml文件中。进入Window->Show View->Other->Androd->File Explorer

下查看文件

点击File Explorer对话框中的右上角第一个按钮从收据将hello.xml文件导出到电脑中,可查看其内容

内容如下

程序测试:——点击TextView,获取SharedPreference保存的数据

时间: 2024-08-30 10:43:51

Android 数据存储——SharedPreference的相关文章

android数据存储_SharedPreferences

源码下载(免下载积分):下载 对于相对较少键值对的数据集合可以使用SharedPreferences来进行存储, 键值对的数据类型基本上是基本数据类型, 常见的操作: 创建新的shared preference文件或者访问已经存在的shared preference, 可以使用getSharedPreferences()或者getPreferences() getSharedPreferences() 对于使用多个sharedpreference文件,你可以使用 这个函数,并可以通过第一个参数来

Android数据存储之SharedPreferences浅析

SharedPreferences 是 Android 数据存储方式中的一种,特别适合用来存储少量的.格式简单的数据,比如应用程序的各种配置信息,如是否打开音效,是否开启震动等等. SharedPreferences 存储数据的位置和格式 SharedPreferences 将数据以键值对的形式,存储在 /data/data/<package name>/shared_prefs 目录下面,以 XML 的格式保存,该 XML 文件的根元素是 <map.../>,该元素里每个子元素代

android 数据存储的几种方式

总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其中文件和数据库可能用的稍多一些,文件用起来较为方便,程序可以自己定义格式:数据库用起稍烦锁一些,但它有它的优点,比如在海量数据时性能优越,有查询功能,可以加密,可以加锁,可以跨应用,跨平台等等:网络,则用于比较重要的事情,比如科研,勘探,航空等实时采集到的数据需要马上通过网络传输到数据处理中心进行存储并进行处理. 对于Android平台来讲,它的存储方式也不外乎这几种,按方式总体来分,也是文件,数据库和网络.但从开发者的

10、Android数据存储

课程目标: 掌握Android中数据存储的几种方式 熟练使用PreferenceActivity&PreferenceScreen做专业的Setting功能 熟练使用SQLite3来存储数据 深入研究SQLite3数据库特性,并且比对与大型数据库的包括存储过程,主外键关联等特性 了解文件存储的内外存储分别  了解网络存储C/S结构原理 . 重点难点:SQLiteOpenHelper类的使用   SQLIte数据库的特性掌握 考核目标: 说出Android数据存储的几种形式 ? Sqlite3能支

Android——数据存储(四种方式之一)SharedPrefereces

Android--数据存储(四种方式) 1.SharedPrefereces   轻量级.XML  存储文件名,数据保存在data/data/basepackage/shared_prefs/myopt.xml中   实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default)   2.读写SD卡  SD的根目录  适用于数据流读写 3.SQLite  轻量级.dp文件多用于手机

Android数据存储(2):Internal Storage

Android数据存储的第二种形式是Internal Storage,即内部存储. 内存存储的特点是存储的是私有数据,其存储位置是在手机内存,一种是普通的文件存储,另一种是文本或图片在内存的缓存. 内部缓存的存放位置/data/data/包名/files 或 /data/data/包名/cache 1.create and write a private file to the internal storage: 步骤: 1)调用 openFileOutput()方法,返回的是一个FileOut

【Android数据存储】- File

个人学习整理,如有不足之处,请不吝指教.转载请注明:@CSU-Max 读写本应用程序数据文件夹中的文件 此种方法读写的文件在/data/data/<应用程序包名>中 android 中提供了 openFileInput(String fileName) 和 openFileOutput(String fileName, int mode) 两个方法来读取本应用程序数据文件夹中的文件和向其写入. openFileInput(String fileName)    打开文件输入流 openFile

Android 数据存储方式分为哪几种?

10道题值得思考 第一道题 1.Android 数据存储方式分为哪几种? SharedPreferences存储数据 2. CotentProvider内容提供者 3. 文件存储 4. 数据库存储(Sqlite) 5.网络存储 2. NDK是什么? 1. 一系列工具类的集合 2. Arm指令集 3. NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.这些工具对开发者的帮助是巨大的. NDK集成了交叉编译器,并提供了相应的mk文件隔离

Android数据存储技术五大方式总结

本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分等),解锁口令密码等