`
byandby
  • 浏览: 1688532 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 数据存储之 Shared Preferences

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





Activity01
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;
	    
	@Override
    public 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值为2
        SharedPreferences 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文件中。 还是来张图 比较爽


  
  不过到这里又稍微纠结了一下 似乎在DDMS下还不能查看 保存我们Preferences值的那个文件Activity01.xml 的内容  那我们就去 shell 里边查吧。





 

  大家要试试 可以去附件下载源码。
  • 大小: 13.4 KB
  • 大小: 13.8 KB
  • 大小: 84.3 KB
  • 大小: 22.2 KB
4
0
分享到:
评论
1 楼 kaiwangkuaile 2011-08-17  
强烈膜拜大虾

相关推荐

    Android 使用Shared Preferences进行数据存储-样例.rar

    Android 使用Shared Preferences进行数据存储-样例,演示如何使用 Shared Preferences 获得数据和保存数据、如何使用getPreferences方法创建文件的模式,以及如何使用getPreferences模拟用户参数设置、查看 ...

    shared-preferences for flutter

    Shared Preferences是Android平台上的一个轻量级的数据存储类,用于保存和读取应用程序的一些常用配置和数据,比如用户设置的参数、游戏分数、应用程序状态等。Shared Preferences类似于Windows中的INI文件,它允许...

    Android数据持久化之Preferences机制详解

    本文实例讲述了Android数据持久化之Preferences机制。分享给大家供大家参考,具体如下: 在Android中,实现数据持久化有五种方式:Preferences,文件File,I/O操作、SQLite数据库,ContentProvider组件。 下面逐个做...

    实验10-Android数据存储和IO.doc

    实验报告评语与评分: 评阅老师签名: 一、实验名称:Android数据存储与IO 二、实验日期:2014/11/13 三、实验目的: 1、掌握SharedPreferences的存储数据的格式及位置,能够读写其他应用程序的Shared Preferences。...

    android数据存储

    在Android中,提供了三种数据存储的途径,和两种存储方式。 三种途径: l 系统配置(Shared Preferences): 这类应用主要是系统的配置信息的保存,比如我给程序界面设置了颜色,我想在下一次启动时还是能够保留...

    android 数据存储之SharedPreferences

    使用SharedPreferences的小项目。

    android开发揭秘PDF

    6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库编程 6.5.1 SQLite简介 6.5.2 SQLite编程详解 6.5.3 SQLiteOpenHelper应用 6.6 数据共享(ContentProviders) 6.7 小...

    《Android应用开发揭秘》附带光盘代码.

     6.2 数据存储之Shared Preferences  6.3 数据存储之Files  6.4 数据存储之Network  6.5 Android数据库编程  6.5.1 SQLite简介  6.5.2 SQLite编程详解  6.5.3 SQLiteOpenHelper应用  6.6 数据共享(Content...

    《Android应用开发揭秘》源码

     6.2 数据存储之Shared Preferences  6.3 数据存储之Files  6.4 数据存储之Network  6.5 Android数据库编程  6.5.1 SQLite简介  6.5.2 SQLite编程详解  6.5.3 SQLiteOpenHelper应用  6.6 数据共享(Content...

    Android应用开发揭秘pdf高清版

    6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库编程 6.5.1 SQLite简介 6.5.2 SQLite编程详解 6.5.3 SQLiteOpenHelper应用 6.6 数据共享(ContentProviders) 6.7 小...

    Android应用开发揭秘(pdf )

     如何通过Shared Preferences、Files、Network和SQLite等方式高效实现Android数据的存储?又如何通过Content Providers轻松地实现Androld数据的共享?  如何使用Open Core、MediaPlayer、MediaRecorder方便快速地...

    一本介绍如何进行安卓(Android)应用程序开发的书籍

    数据存储:介绍如何在安卓应用程序中进行数据存储,包括Shared Preferences、SQLite数据库、文件存储等方式。 网络通信:介绍如何在安卓应用程序中进行网络通信,包括HTTP请求、WebSocket、Retrofit等网络库的使用...

    Android开发案例驱动教程 配套代码

    10.2 Android数据存储概述 205 10.3 本地文件 205 10.3.1 访问SD卡 207 10.3.2 访问应用文件目录 212 10.4 SQLite数据库 216 10.4.1 SQLite数据类型 216 10.4.2 Android平台下管理SQLite数据库 216 10.5 编写...

    【Android】数据存储

    使用共享首选项(Shared Preferences)3. 序列化3.1. XML序列化3.2. XML解析4. SQLite数据库4.1. SQLite的命令行操作4.2. 在SQL数据库中存放数据4.3. 数据库的事务 摘自老师文档 1. 保存数据到文件 1.1. 内部、...

    【Android】数据存储_问答

    Content保存数据到文件使用共享首选项 (Shared Preferences)序列化SQLite数据库 保存数据到文件 在android设备中什么是internal和external存储区? internal,内部存储区,不易失,保存的文件是 app 私有的 ...

    SharedPreferences例子源码

    SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的...

Global site tag (gtag.js) - Google Analytics