Android数据的四种存储方式之SharedPreferences
除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/< >/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:
一、根据Context获取SharedPreferences对象
二、利用edit()方法获取Editor对象。
三、通过Editor对象存储key-value键值对数据。
四、通过commit()方法提交数据。
下面是用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; } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。