简便轻巧的使用SharedPreferences 存储
来源:互联网 发布:乐乎网络电话 编辑:程序博客网 时间:2024/05/21 06:49
少量数据需要持久化的时候,我们用不到数据库保存数据(数据很少,操作数据库效率低下)。Android 给我们提供了使用键值对存储数据的SharedPreferences,也就是说,当保存数据的时候,需要给相应数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharedPreferences支持多种不同数据类型的存储,如存储的数据类型是整型,那么读出来的数据也是整型,存储的数据是一个字符串,读出来的数据也是一个字符串。下面写个demo来演示一下:
首先是布局文件,三个按钮分别表示存数据,取数据,清除数据:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.myapplication.MainActivity"> <Button android:id="@+id/saveData" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="saveDate" /> <Button android:id="@+id/getSaveData" android:layout_below="@id/saveData" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="getSaveData" /> <Button android:id="@+id/clearData" android:layout_below="@id/getSaveData" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="clear" /></RelativeLayout>
public class MainActivity extends AppCompatActivity { private Button saveData ,getSaveData ,clearData; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); saveData = $(R.id.saveData); getSaveData = $(R.id.getSaveData); clearData = $(R.id.clearData); saveData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //创建名为“data”的文件,加入键值对,保存数据 SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit(); editor.putString("name","I am a boy "); //必须commit editor.commit(); } }); getSaveData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //取出文件中键值对,并提示出来 SharedPreferences preferences = getSharedPreferences("data",MODE_PRIVATE); String name = preferences.getString("name",""); Toast.makeText(MainActivity.this,name,Toast.LENGTH_SHORT).show(); } }); clearData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit(); editor.clear(); editor.commit(); } }); } public <T extends View> T $(int id) { return (T) findViewById(id); }}这样做,每次保存数据,取数据,都要commit一下,能不能封装一下呢,更方便的为我们所用呢?下面,我封装一个类,来简易操作这个SharedPreferences:
/** * Created by dhl on 2016/7/14. */public class SharedPreferencesHelper { private static SharedPreferencesHelper sharedPreferencesHelper = null; //单例模式,把Context传进去 public static SharedPreferencesHelper getInstance(Context context) { if (sharedPreferencesHelper == null) { synchronized (SharedPreferencesHelper.class) { if (sharedPreferencesHelper == null) { sharedPreferencesHelper = new SharedPreferencesHelper(); sharedPreferencesHelper.setContext(context); return sharedPreferencesHelper; } } } return sharedPreferencesHelper; } private Context context; public void setContext(Context context) { this.context = context; } //取Boolean 型数据 public boolean getBoolean(String key, boolean defValue) { try { return getSP().getBoolean(key, defValue); } catch (NullPointerException exception) { Log.d("hcj", "" + exception); return defValue; } } //存Boolean 型数据 public void putBoolean(String key, boolean value) { try { SharedPreferences.Editor editor = getSP().edit(); editor.putBoolean(key, value); editor.commit(); } catch (NullPointerException exception) { Log.d("hcj", "" + exception); } } //取Long 型数据 public long getLong(String key, long defValue) { try { return getSP().getLong(key, defValue); } catch (NullPointerException exception) { Log.d("hcj", "" + exception); return defValue; } } //存Long 型数据 public void putLong(String key, long value) { try { SharedPreferences.Editor editor = getSP().edit(); editor.putLong(key, value); editor.commit(); } catch (NullPointerException exception) { Log.d("hcj", "" + exception); } } //取整型 public int getInt(String key, int defaultValue) { try { return getSP().getInt(key, defaultValue); } catch (Exception e) { Log.d("hcj", "" + e); return defaultValue; } } //存整型 public void putInt(String key, int value) { try { SharedPreferences.Editor editor = getSP().edit(); editor.putInt(key, value); editor.commit(); } catch (Exception e) { Log.d("hcj", "" + e); } } //取String public String getString(String key, String defValue) { try { return getSP().getString(key, defValue); } catch (NullPointerException e) { Log.d("hcj", "" + e); return defValue; } } //存String public void putString(String key, String value) { try { SharedPreferences.Editor editor = getSP().edit(); editor.putString(key, value); editor.commit(); } catch (NullPointerException e) { Log.d("hcj", "" + e); } } //清除数据 public void clear() { try { SharedPreferences.Editor editor = getSP().edit(); editor.clear(); editor.commit(); } catch (NullPointerException e) { Log.d("hcj", "" + e); } } //获得SharedPreferences对象 private SharedPreferences getSP() { return context.getSharedPreferences("sp", Context.MODE_PRIVATE); } private SharedPreferences getSP(String name) { return context.getSharedPreferences(name, Context.MODE_PRIVATE); }}
MainActivity 代码修改如下:
package com.example.myapplication;import android.content.SharedPreferences;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private Button saveData ,getSaveData ,clearData; private SharedPreferencesHelper sh ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); saveData = $(R.id.saveData); getSaveData = $(R.id.getSaveData); clearData = $(R.id.clearData); sh = SharedPreferencesHelper.getInstance(MainActivity.this); saveData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { /* //创建名为“data”的文件,加入键值对,保存数据 SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit(); editor.putString("name","I am a boy "); //必须commit editor.commit();*/ sh.putString("name","*******"); } }); getSaveData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //取出文件中键值对,并提示出来 SharedPreferences preferences = getSharedPreferences("data",MODE_PRIVATE); String name = preferences.getString("name",""); name = sh.getString("name",""); Toast.makeText(MainActivity.this,name,Toast.LENGTH_SHORT).show(); } }); clearData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // /*SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit(); editor.clear(); editor.commit();*/ sh.clear(); } }); } public <T extends View> T $(int id) { return (T) findViewById(id); }}OK了,总结完毕。
0 0
- 简便轻巧的使用SharedPreferences 存储
- SharedPreferences存储的使用
- SharedPreferences的使用~读取,或者存储!
- 数据 的存储(1)使用SharedPreferences
- 数据 的存储(1)使用SharedPreferences
- 数据 的存储(1)使用SharedPreferences
- 数据 的存储(1)使用SharedPreferences
- 数据 的存储(1)使用SharedPreferences
- 数据 的存储(1)使用SharedPreferences
- 数据 的存储(1)使用SharedPreferences
- Android存储---SharedPreferences的介绍与使用
- Android-数据存储SharedPreferences的使用
- SharedPreferences数据存储类的简单使用
- 使用SharedPreferences存储数据
- 使用SharedPreferences存储数据
- 使用SharedPreferences存储数据
- SharedPreferences存储使用
- 使用SharedPreferences存储数据
- localstorage
- 4-10 二分查找 (20分)
- js tool
- Localstorage处理异常
- 第三章:Java基础程序设计(上)
- 简便轻巧的使用SharedPreferences 存储
- cookie.js
- python列表复制(浅拷贝and深拷贝)
- HDU 1020 Encoding
- nfs pure-ftpd vsftp的快速部署与配置
- MySQL数据导入导出
- 简单正则表达式
- UVa572-Oil Deposits
- 网页文本框大小设置