Android数据存储之Shared Preferences详解

话说Android的数据存储一共提供了4种数据存储方式,但是由于存储的这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些数据的话,就要使用Android提供的Content Providers(数据共享)。

        Android中4种数据存储方式如下:

        -Shared  Preferences:轻量级的键值存储机制,只可以存储基本数据类型。Shared  Preferences主要是针对系统配置信息的保存,比如我们经常使用的情景模式设置,这会设置了静音,关机后在开机后,还是静音,改成标准的时候,关机或者跳出其他界面时,它依旧是标准,这就是Shared  Preferences的功能。

        -Files:和java中的文件差不多,也是要与流相关联吧。在Android中,文件是一个应用程序私有的,也就是说给应用程序是无法去读写其他的应用程序的文件。Files就是把需要保存的文件信息通过它的格式记录下来,下次需要的时候,通过读取此文件就可以获取了。我们知道,android采用了Linux核心,在此系统中,文件也是Linux的形式。

       -SQLite:android中比较受欢迎的数据存储,因为它支持SQL语句。是一个开源的关系数据库,与普通关系数据库一样,也具有ACID的特性,可以用来存储大量的数据,并且能够很容易的对数据进行使用、维护、更新等基本操作。所以相对于操作,比上面2中来的比较的麻烦。

       -NetWork:见名思意,网络,即网络存储,也可以这么认为吧,通过网络来获取和保存数据资源吧,前提是网络连接状态是否畅通。

      我记得MySql配置后,会由一个ini文件,当然,不只是MySql有的,ini文件的作用就是用来保存应用程序的一些属性设置。这里的Shared  Preferences就是和ini的作用差不多。举个例子来说下:通过上一次用户所做的修改或者自定义参数设置,当再次启动程序后依然保持原有的设置。通过getPreferences()方法获得Preferences对象,通过“SharedPreferences.Editor editor = state.edit();”取得编辑的对象,接着通过"editor.put...()"方法添加数据,最好不要忘记还需要进行提交“editor.commit();”保存需要保存的方法。SharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中的File Explorer中的/data/data/<package name>/shares_prefs下。

      下面用个例子来跑一下吧:

       MainActivity类

public class MainActivity extends Activity
{

 private boolean  flag  = false;
 private TextView mTextView = null;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  mTextView = (TextView) this.findViewById(R.id.TextView01);
  /*对数据进行加载*/
  //通过getPreferences()方法获取SharedPreferences对象
  SharedPreferences set = getPreferences(Activity.MODE_PRIVATE);
  //进行设置值
  flag = set.getBoolean("flag", false);
  
  if (flag)
  {
   mTextView.setText("当前状态:开");
   flag = true;
  }
  else
  {
   mTextView.setText("当前状态:关");
  }
 }

 public boolean onKeyUp(int keyCode, KeyEvent event)
 {
  switch (keyCode)
  {
   case KeyEvent.KEYCODE_DPAD_UP:
    mTextView.setText("当前状态:开");
    flag = true;
    break;
   case KeyEvent.KEYCODE_DPAD_DOWN:
    mTextView.setText("当前状态:关");
    flag = false;
    break;
  }
  return true;
 }

 public boolean onKeyDown(int keyCode, KeyEvent event)
 {
  if (keyCode == KeyEvent.KEYCODE_BACK)
  {
   /*但我们退出此应用程序的时候就会为我们保存数据*/
   //获取SharedPreferences对象
   SharedPreferences state = getPreferences(0);
   //获取SharedPreferences.Editor编辑对象
   SharedPreferences.Editor editor = state.edit();
   //将需要保存的值添加到编辑器中
   editor.putBoolean("flag", flag);
   //提交编辑器的内容,以此保存
   editor.commit();
   
   this.finish();
   return true;
  }
  return super.onKeyDown(keyCode, event);
 }
}

运行最后的结果,操作的每一步骤我都粘贴出来:

Android数据存储之Shared Preferences详解

按下键盘的向下键,调制为“开”

Android数据存储之Shared Preferences详解

返回到主页面,或者其他页面,只要退出该应用程序即可。这里就退到主页面吧:

Android数据存储之Shared Preferences详解

最后,再进去看一下吧:

Android数据存储之Shared Preferences详解

看看数据保存在哪里吧:data/data/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwjywf.html