Android四个存储数据的SharedPreferences

时间:2023-12-06 14:52:38

  除了SQLite外部数据库。SharedPreferences它是一个轻量级的数据存储,其本质是基于XML文件存储key-value键值数据,通过定期用它来存储一些简单的配置信息。它的存储位置/data/data/< >/shared_prefs文件夹下。SharedPreferences对象本身仅仅能获取数据而不支持存储和改动,存储改动是通过Editor对象实现。实现SharedPreferences存储的过程例如以下:

  一、依据Context获取SharedPreferences对象

  二、利用edit()方法获取Editor对象。

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

  四、通过commit()方法提交数据。

以下是用SharedPreferences存储数据的一个案例:

Android四个存储数据的SharedPreferences

点击开启开启WiFi。设置进度条,保存状态,下次打开此程序,将显示上次保存的状态。

核心code例如以下:

package com.ghsy.demo;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.Menu;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener; public class MainActivity extends Activity { private CheckBox checkBox;
private SeekBar seekBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkBox=(CheckBox) this.findViewById(R.id.checkBox1);
seekBar=(SeekBar) this.findViewById(R.id.seekBar1);
/*除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件
*存储key-value键值对数据,通经常使用来存储一些简单的配置信息。其存储位置在/data/data/< >/sh
*ared_prefs文件夹下。SharedPreferences对象本身仅仅能获取数据而不支持存储和改动,存储改动是
*通过Editor对象实现。 */
//sharedPreferences存储数据的步骤:
//1.依据context获取SharedPreferences对象
final SharedPreferences preferences=MainActivity.this.getSharedPreferences("setting",MODE_PRIVATE );
//点击发生状态改变的时候。调用对应的方法
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){ @Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
//2.通过SharedPreferences获取editor对象(对数据存储改动的对象)
Editor editor=preferences.edit();
//3.通过editor对象存储key-value键值对数据
editor.putBoolean("wifi", isChecked);
//4.通过commit方法提交数据
editor.commit(); }
});
//当点开当前页面的时候,从preferences中获取当前的的wifi开启状态
Boolean boolean1 = preferences.getBoolean("wifi", false);
checkBox.setChecked(boolean1);
//当seekbar在移动的时候对其做一个监听
this.seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// 进度条停止的时候 }
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// 进度条開始移动 }
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// 进度条运动后(在移动)
Editor editor=preferences.edit();
editor.putInt("seek", progress);
editor.commit(); }
});
int progress=preferences.getInt("seek", 0);
this.seekBar.setProgress(progress);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }