使用SharedPreferences进行数据存储

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。

对于软件配置参数的保存,如果是Windows软件通常我们会采用ini文件进行保存;

如果是j2se,我们会采用properties属性文件或者xml进行保存;

如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?

Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。

使用SharedPreferences保存数据,其背后使用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下。

保存参数&回显参数:

1.实现布局:

代码—actvity_main.xml:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     android:orientation="vertical"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     >
 6
 7     <TextView
 8         android:layout_width="wrap_content"
 9         android:layout_height="wrap_content"
10         android:text="@string/name" />
11
12     <EditText
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content"
15         android:id="@+id/name" />
16
17     <TextView
18         android:layout_width="wrap_content"
19         android:layout_height="wrap_content"
20         android:text="@string/age" />
21
22     <EditText
23         android:layout_width="match_parent"
24         android:layout_height="wrap_content"
25         android:numeric="integer"
26         android:id="@+id/age" />
27
28     <Button
29         android:layout_width="wrap_content"
30         android:layout_height="wrap_content"
31         android:text="@string/button"
32           android:onClick="save"
33         />
34
35 </LinearLayout>

string.xml:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <resources>
 3
 4     <string name="app_name">软件参数设置</string>
 5     <string name="hello_world">Hello world!</string>
 6     <string name="name">姓名</string>
 7     <string name="age">年龄</string>
 8     <string name="button">保存参数</string>
 9     <string name="success">保存完成</string>
10
11 </resources>

2.通过建立一个业务类实现保存和获取数据的功能—PreferencesServiceservice.java:

 1 package cn.itcast.service;
 2
 3 import java.util.HashMap;
 4 import java.util.Map;
 5
 6 import android.content.Context;
 7 import android.content.SharedPreferences;
 8 import android.content.SharedPreferences.Editor;
 9
10
11 public class PreferencesServiceservice {
12     private Context context;
13
14     public PreferencesServiceservice(Context context) {
15         this.context = context;
16     }
17
18     public void save(String name, Integer age) {
19         //由于我们采用SharedPreferences来保存参数,所以首先获得SharedPerences这个类型的对象
20         //这个类型的对象的取得,我们要通过上下文对象来得到,所以首先引入上下文对象
21         //上下文对象我们通过构造器传入进来,然后在此处调用上下文对象中的getSharedPreferences()
22         SharedPreferences preferences = context.getSharedPreferences("itcast", Context.MODE_PRIVATE);//文件名称(不要后缀),操作模式
23         //得到了这个对象后,我们就可以利用它提供的API向里面存放数据了
24         //先取得编辑器后,通过编辑器对象存放数据
25         Editor editor = preferences.edit();
26         //然后调用它的常用类型put方法,往servePreference里面存放数据
27         editor.putString("name",name);
28         editor.putInt("age",age);
29         //目前这两项参数是保存在内存中的,还没有真正的保存在文件中
30         editor.commit();//提交方法,把内存中存放的数据,提交回文件中,完成数据的保存
31     }
32
33     //获取SharedPreferences保存的参数
34     //再定义一个业务
35     /**
36      * 获取各项配置参数
37      * @return
38      */
39     public Map<String,String> getPreferences()
40     {
41         Map<String,String> params = new HashMap<String,String>();
42         //首先取得SharedPreferences 的对象
43         SharedPreferences preferences = context.getSharedPreferences("itcast", Context.MODE_PRIVATE);
44         params.put("name", preferences.getString("name", ""));
45         params.put("age", String.valueOf(preferences.getInt("age", 0)));
46         return params;
47     }
48 }

3.在主活动中调用该保存和回显参数的功能—MainActivity.java:

 1 package cn.itcast.setting;
 2
 3 import java.util.Map;
 4
 5 import cn.itcast.service.PreferencesServiceservice;
 6 import android.app.Activity;
 7 import android.os.Bundle;
 8 import android.view.Menu;
 9 import android.view.MenuItem;
10 import android.view.View;
11 import android.widget.EditText;
12 import android.widget.Toast;
13
14 public class MainActivity extends Activity {
15     private EditText nameText;
16     private EditText ageText;
17     private PreferencesServiceservice service;
18
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_main);
23         nameText = (EditText)this.findViewById(R.id.name);
24         ageText = (EditText)this.findViewById(R.id.age);
25
26         service = new PreferencesServiceservice(this);
27         //回显代码
28         Map<String,String> params = service.getPreferences();
29         nameText.setText(params.get("name"));
30         ageText.setText(params.get("age"));
31     }
32
33     public void save(View v)
34     {
35         String name = nameText.getText().toString();
36         String age = ageText.getText().toString();
37         //点击按钮要保存参数,保存参数的过程就是业务处理的过程
38         //所以我们应该把这段代码写在service层,所以我们写一个类叫做参数service类
39 //        PreferencesServiceservice service = new PreferencesServiceservice(this);
40         service.save(name,Integer.valueOf(age));
41         Toast.makeText(getApplicationContext(), R.string.success, 1).show();
42     }
43
44 }

注解:

因为SharedPreferences背后是使用xml文件保存数据,getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,名称不用带后缀,

后缀会由Android自动加上。方法的第二个参数指定文件的操作模式,共有4种操作模式。如果希望SharedPreferences背后使用的xml文件能被其他应用读和写,

可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。

另外,Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。

时间: 2024-10-24 08:50:08

使用SharedPreferences进行数据存储的相关文章

无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.demo1" /> 上面targetPackage指定的包要和应用的package相同. (2)在清单文件中ap

Android——配置文件的保存SharedPreferences进行数据存储

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存.如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使用SharedPreferen

使用SharedPreferences进行数据存储和读取

1.储存 很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存.如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使用SharedPre

Android 使用SharedPreferences进行数据存储和读取数据

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存.如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使用SharedPreferen

处女男学Android(十三)---Android 轻量级数据存储之SharedPreferences

一.前言 转载请标明出处:http://blog.csdn.net/wlwlwlwl015/article/details/42437007 初学Android的时候在Activity之间传值我都是用Intent+Bundle这种模式去实现的,刚开始觉得没什么,后来渐渐发现了弊端,就是说只能逐层传递,当我的好几个Activity都需要从一个Activity中取数据的时候,这样就显得相当局限了,传来传去的即麻烦,又不合理,后来就想在Android中有没有web开发中类似于Session的东西,只要

Base-Android快速开发框架(二)--数据存储之SharedPreferences

对于Android开发者来说,抽象来说,其实就是将数据应各种各样的方式展示在用户面前以及采集用户的数据.采集用户的数据包括用户的输入.触摸.传感器等,展示的数据通过网络来源于各业务系统,以及用户的 输入数据.在这个过程中,数据存储显得由为重要.这也是我做为开端讲解的目的.良好的运用数据存储,不仅的能有效减少范围服务器的次数.用户的流量,还能加快Apps的响应速度,甚至简化应用的业务逻辑.数据 存储这一块将介绍常用的2种数据缓存方式,由Android SharedPreferences文件数据存储

android SharedPreferences 简单的数据存储

SharedPreferences 简单数据存储,我的理解是类似于windows的ini文件 可以存储很多种类型,写了个小例子 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLa

Android学习笔记 --- 数据存储与访问 (File,sdcard,sharedpreferences,sqlite)

一.使用文件进行数据存储 1.context.openFileOutput()方法  写入文件内容 在上下文context中 openFileOutput方法可以用于把数据输出到文件中 示例代码: public static void fileStorage(Context context){ try { FileOutputStream fos = context.openFileOutput("filedata.txt", context.MODE_PRIVATE); fos.wr

Android中数据存储之SharedPreferences

import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; /** * SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储Key-Value键值对数据,<br/> * 通常用来存储一些简单的配置信息.其存储位置在/data/data/<包名>/shared_pr