Shared Preferences类似于我们常用的ini 文件,用来保存应用程序的一些属性设置,在 Android平台常用于存储比较简单的参数设置。例如,可以通过它保存上一次用户所做的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置。通过 getPreferences()方法来获得Preferences对象,通过 "SharedPreferences.Editor editor = uiState.edit();" 取得编辑对象,然后通过"edit.put....()"方法添加数据,最后通过commit()方法保存这些数据,如果不需要与其它模块共享数据,可以使用Activity.getPreferences()方法保持数据私有。需要着重强调一点是,我们无法直接在多个程序间共享Preferences 数据。 下面我们通过一个例子来保存应用程序当前是否 播放音效的状态。当前音效状态处于关闭时,我们按“上”方向键来开启音效,然后退出程序------>点击back按钮 ,当我们再次启动应用程序,现在的音效状态就处于开的状态。 在这个程序中我们在退出时把音效状态保存到 Preferences 中,因此在启动时就读取出上次保存的数据。 我们上次保存的是什么状态 ,在打开的时候就是什么状态。 但是大家得点击back按钮退出时才会保存,因为 我们的 保存操作是放在 back按钮的监听事件里边完成的。 来看看运行时的图片。

package xiaohang.zhimeng;import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.TextView;public class Activity01 extends Activity {private MIDIPlayer    mMIDPlayer = null;private boolean     mbMusic       = false;private TextView    mTextView  = null;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);mTextView = (TextView) this.findViewById(R.id.TextView01);mMIDPlayer = new MIDIPlayer(this);/*装载资源*///取得活动的preferences对象.//getPreferences方法返回单一的SharedPreferences实例 //getPreferences参数 为操作模式 分别有 //MODE_PRIVATE私有int值为0   MODE_WORLD_READABLE可读int值为1  MODE_WORLD_WRITEABLE可写int值为2SharedPreferences settings = getPreferences(Activity.MODE_PRIVATE);//取得值 如果mbMusic的值不存在 则直接把false赋给它mbMusic = settings.getBoolean("bmusic", false);if (mbMusic) {mTextView.setText("当音乐状态:开");mbMusic = true;mMIDPlayer.PlayMusic();}else {mTextView.setText("当前音乐状态:关");}}public boolean onKeyUp(int keyCode, KeyEvent event){switch (keyCode) {case KeyEvent.KEYCODE_DPAD_UP:mTextView.setText("当前音乐状态:开");mbMusic = true;mMIDPlayer.PlayMusic();break;case KeyEvent.KEYCODE_DPAD_DOWN:mTextView.setText("当前音乐状态:关");mbMusic = false;mMIDPlayer.FreeMusic();break;}return true;}public boolean onKeyDown(int keyCode, KeyEvent event){if (keyCode == KeyEvent.KEYCODE_BACK) {/*这里我们在退出应用程序时保存数据*///取得活动的preferences对象SharedPreferences uiState = getPreferences(0);//取得编辑对象SharedPreferences.Editor editor = uiState.edit();//添加值editor.putBoolean("bmusic", mbMusic);//提交保存  NOTE:如果不commit 保存无效
            editor.commit();if ( mbMusic ) {mMIDPlayer.FreeMusic();}this.finish();return true;}return super.onKeyDown(keyCode, event);}
}

MIDIPlayer类主要用来开启和关闭音乐服务

package xiaohang.zhimeng;import java.io.IOException;import android.content.Context;
import android.media.MediaPlayer;public class MIDIPlayer {public     MediaPlayer playerMusic = null;private Context        mContext     = null;public MIDIPlayer(Context context){mContext = context;}//播放音乐public void PlayMusic(){//装载资源文件中的音乐playerMusic = MediaPlayer.create(mContext, R.raw.start);//设置是否循环playerMusic.setLooping(true);try {playerMusic.prepare();} catch (IllegalStateException e) {e.printStackTrace();}catch (IOException e) {e.printStackTrace();}playerMusic.start();}//停止播放音乐public void FreeMusic(){if (playerMusic != null) {playerMusic.stop();playerMusic.release();}}
}

现在我们已经实现通过Preferences 来存取数据了,那么这些数据到底放在了哪里?其实没安装一个应用程序时,在/data/data 目录下都会产生一个文件夹,如果应用程序使用了Preferences, 那么便会在该文件夹下产生一个shared_prefs 文件夹,其中就是我们保存的数据。查看步骤:
   1.  启动模拟器,启动Eclipse
   2. 在Eclipse中切换到DDMS ,选择File Explorer标签
   3. 找到/data/data 目录中用Preferences 来存取的数据存在Activity01.xml文件中.

转载于:https://www.cnblogs.com/MMLoveMeMM/articles/3360412.html

android 数据存储之 Shared Preferences相关推荐

  1. Android数据存储:Shared Preferences

    Android数据存储之SharedPreferences 在Android系统中提供了多种存储技术.通过这些存储技术可以将数据存储在各种存储介质上, Android 为数据存储提供了如下几种方式: ...

  2. Android数据存储几种方式用法总结

    Android数据存储几种方式用法总结 1.概述 Android提供了5种方式来让用户保存持久化应用程序数据.根据自己的需求来做选择,比如数据是否是应用程序私有的,是否能被其他程序访问,需要多少数据存 ...

  3. Android数据存储——2.文件存储_B_资源文件

    今天学习Android数据存储--文件存储_资源文件 把资源文件mybook.txt放入项目目录下的res资源文件夹下的raw文件夹下(没有则新建),PS:mybook.txt存为UTF-8编码. X ...

  4. Android数据存储——2.文件存储_C_DOM解析XML文档

    今天学习Android数据存储--文件存储_DOM解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效 ...

  5. Android数据存储之GreenDao 3.0 详解

    前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite----> ...

  6. < Android数据存储> 任务二 应用程序数据文件夹里的文件读写

    :zh]Android中提供了两个方法用来打开应用程序的数据文件夹IO流. 1.FileInputStream openFileInput(String name):参数name表示某个文件名,该方法 ...

  7. 5 Android数据存储 任务二 应用程序数据文件夹里的文件读写 ,

    Android中提供了两个方法用来打开应用程序的数据文件夹IO流. 1.FileInputStream openFileInput(String name):参数name表示某个文件名,该方法用于打开 ...

  8. android+默认存储,Android 数据存储之SP存储,内部存储,外部存储

    Android 数据存储之SP存储,内部存储,外部存储 Android提供了多种数据存储的技术来永久的保存应用数据,以便于开发者能够根据自己的需求来选择合适的数据存储方案,主要有SharedPrefe ...

  9. Android数据存储安全实践

    0x00 数据安全 Android操作系统自问世以来凭借其开放性和易用性成为当前智能手机的主流操作系统之一,作为与人们关系最密切的智能设备,越来越多的通讯录.短信.视频等隐私数据以明文的方式保存在手机 ...

  10. 【Android数据存储】ContentProvider详细介绍(附实例源码)

    1.ContentProvider是什么? ContentProvider--内容提供者.它是一个类,这个类主要是对Android系统中进行共享的数据进行包装,并提供了一组统一的访问接口供其他程序调用 ...

最新文章

  1. 总奖金200万的算法赛方案汇总!
  2. React Router 使用教程
  3. vs2005常用调试快捷键 (转载)
  4. QQ病毒越来越人性化了
  5. 帆软报表(finereport)控件背景色更改
  6. '800a0005' 图片上传出现写入文件失败的错误 -- 修改pload_5xsoft.inc
  7. pythonasyncio并发编程实战_python异步编程之asyncio(百万并发)
  8. c语言作业模拟虚拟内存,如何用c语言实现虚拟内存
  9. sql server 2008 每次都要use_这个方法选的都是强势股,短线操作,快进快出,不恋战,建议收藏...
  10. hadoop tyarn冲突_Doris与Hadoop yarn混合部署遇到的坑
  11. final变量属性小记
  12. 海思Hi3798MV300_Hi3798MV300H_Datasheet-系统
  13. No Route to Host from master/192.168.2.131 to master:9000 failed on socket t
  14. 使用opencv时报错:C2065 “CV_COMP_CORREL”: 未声明的标识符
  15. 原生小程序使用 flyio,以及拦截器
  16. 帮助计算机网络犯罪活动罪司法解释,帮助信息网络犯罪活动罪司法适用研究
  17. 编译原理中间代码生成--java实现
  18. Oracle项目管理案例之AECOM
  19. echarts 饼状图显示各类别展示所占百分比
  20. 微型计算机控制技术:模拟量输入通道 简述题 + ADC接口电路设计分析

热门文章

  1. 如何在Mac上的网站上设置时间限制?
  2. macOS版本大升级,这几项的细节值得你关注
  3. MacOS 应对系统无响应的方法
  4. 【转载】在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问,并可修改MySQL密码...
  5. Python数据库连接池DBUtils(基于pymysql模块连接数据库)
  6. Cocos2dx源码记录(3) CCVertexIndexData
  7. Hyper-V常见故障汇总
  8. spring--事务原理
  9. cmd命令配置MySQL
  10. 【为了爱,为了pascal】【第三章】 认识PASCAL语言基础