`
jk138
  • 浏览: 153844 次
  • 性别: Icon_minigender_1
  • 来自: 茂名
社区版块
存档分类
最新评论

数据存储之shared preferences

阅读更多

 

一. shared preferences

   1、 Shared Preferences 是什么? 

Shared Preferences 类似于winform中做一些小型配置的ini文件,用来保存一些用户设置的参数。例如,可以通过它保存上一次用户所做的修改或者自定义参数设定,当再次启动程序后依然保持原有设置。

 

   2、如何使用 Shared Preferences 获得数据? 

 

Shared Preferences提供了getPreferences方法来获得Preferences对象,取得该对象了,即可以使用Editor取得编辑对象

 

 

3、如何使用 Shared Preferences 保存数据?

   3.1 Shared Preferences支持的数据类型:

     布尔值

     浮点值

     整形值

     长整型

     字符串值

 

 

上文获得Editor对象之后即可通过 Android 提供的各自操作函数进行数据提交,如:putBoolean()提交一个键值 为bool值的数据,最后通过commit方法保存这些数据。

   3.2、使用getPreferences方法创建文件的模式

 

在 Android系统提供的API中, 获取 Preferences对象有四种类型,分别如下:

 

文件创建模式:Activity.MODE_APPEND

如果该文件已经存在,然后将数据写入,而不是抹掉它现有文件的末尾。

文件创建模式:MODE_PRIVATE

默认模式,在那里创建的文件只能由应用程序调用,即为私有的

文件创建模式:Activity.MODE_WORLD_READABLE

允许所有其他应用程序有读取和创建文件的权限。

文件创建模式:Activity.MODE_WORLD_WRITEABLE

允许所有其他应用程序具有写入、访问和创建的文件权限。

本例中使用到了私有的文件创建模式,来获取Preferences对象。

 

 

4、 模拟用户参数设置

 

在模拟的例子中,我们放了一个复选框和一个文本显示控件,然后通过播放音乐来达到模拟效果。当复选框选中时打开音乐,文本显示控件显示当前音乐为:打开,如果反选复选框则音乐停止,文本显示控件显示当前音乐为:关闭。如果你按下模拟器的返回按钮退出的同时保存当前的状态,如果复选框选中则一打开程序立刻播放音乐,反之则不播放音乐。代码如下:

    主Activity

package com.chaowen;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;

public class sharePreferencesDemo extends Activity {
    /** Called when the activity is first created. */
	private TextView myTextView;
	private CheckBox myBox;
	private playMusic PLAYER=null;
	private boolean isplay=false;
	
	
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        myTextView=(TextView)findViewById(R.id.TextView01);
        myBox=(CheckBox)findViewById(R.id.CheckBox01);
        PLAYER=new playMusic(this);
        /*
         * 文件创建模式:Activity.MODE_APPEND
         * 如果该文件已经存在,然后将数据写入,而不是抹掉它现有文件的末尾。
         */ 
        /*
         * 文件创建模式:MODE_PRIVATE
         * 默认模式,在那里创建的文件只能由应用程序调用,即为私有的
         */ 
        /*
         * 文件创建模式:Activity.MODE_WORLD_READABLE
         * 允许所有其他应用程序有读取和创建文件的权限。
         */
        /*
         * 文件创建模式:Activity.MODE_WORLD_WRITEABLE
         * 允许所有其他应用程序具有写入、访问和创建的文件权限。
         */
        
        SharedPreferences setting=getPreferences(Activity.MODE_PRIVATE);
        //通过key值找到value,如果不存在即返回false
        isplay=setting.getBoolean("isplay", false);
        myBox.setChecked(isplay);
        if(isplay){
        	myTextView.setText("当前的音乐播放状态:开");
        	isplay=true;
        	PLAYER.Play();
        }else {
			myTextView.setText("当前的音乐的播放状态:关");
			
		}
        
        myBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			
			@Override
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				 if(isChecked){
					 myTextView.setText("当前的音乐播放状态:开");
					 isplay=true;
					 PLAYER.Play();
				 }else {
						myTextView.setText("当前的音乐的播放状态:关");
						isplay=false;
						PLAYER.FreeMusc();
			}
				
			}
		});
    }
    
    
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
           if(keyCode==KeyEvent.KEYCODE_BACK){
        	   SharedPreferences uiState=getPreferences(0);
        	   SharedPreferences.Editor editor=uiState.edit();
        	   editor.putBoolean("isplay", isplay);
        	   editor.commit();
        	   if(isplay){
            	   PLAYER.FreeMusc();
               }
               this.finish();
               return true;
           }
          
           
           return super.onKeyDown(keyCode, event);
    }
}

  playMusic.java

 package com.chaowen;

import java.io.IOException;

import android.content.Context;
import android.media.MediaPlayer;

public class playMusic {

	public MediaPlayer music=null;
	private Context myContext;
	
	public playMusic(Context cc)
	{
		myContext=cc;
	}
	
	public void Play()
	{
		 
			music=MediaPlayer.create(myContext, R.raw.start);
		
			music.setLooping(true);
			try {
				music.prepare();
			} catch (IllegalStateException e) {
				// TODO: handle exception
				e.printStackTrace();
			}
			catch (IOException e) {
				// TODO: handle exception
				e.printStackTrace();
			}
			music.start();
		 
		 
	}
	
	public void FreeMusc()
	{
		if(music!=null)
		{
			music.stop();
			music.release();
		}
	}
}

 main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<CheckBox   android:id="@+id/CheckBox01"
 android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<TextView   android:id="@+id/TextView01" 
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>
 

 

5、查看 Preferences 产生的文件

通过上面的例子和代码的实现,己经实现了我们当初期望得到的效果,如果说它像winform中的ini文件,那么它就会创建在一个地方咯。没错,下面我们就来找到它。

在每安装一个Android 应用程序时,data/data目录下都会产生一个文件夹,如果应用程序中使用了 Preferences 则会在该应用程序文件夹下产生一个shared_prefs文件夹,我们产生的文件正安静的躺在那里等着我们呢。。。。(YY中。。。),查看步骤要求:

  • 必须启动模拟器,运行程序。
  • 在 你使用的IDE中切换到DDMS视图,选择File Explorer标签。注意:如果你的File Explorer里面没有任何东西,请根据此步骤找回--》DDMS-在Devices标签中选择
    • 点击Reset adb即可将你的 File Explorer还原。
    • 找到/data/data目录中对应的项目文件夹下的shared_prefs文件夹

分享到:
评论

相关推荐

    android 数据存储之 Shared Preferences

    在Android应用开发中,数据存储是一项重要的任务,用于持久化应用程序的数据,以便在用户退出或设备重启后仍能保留信息。在多种数据存储方式中,`SharedPreferences` 是一种轻量级且易于使用的机制,主要用于存储...

    利用Shared Preferences,在2个不同的Activity传递数据

    Shared Preferences 是一种轻量级的数据存储方式,适用于保存少量、简单的键值对数据,如登录账号信息。在这个主题中,我们将深入探讨如何利用 Shared Preferences 在两个不同的 Activity 之间传递数据。 1. **...

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

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

    shared-preferences for flutter

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

    Android数据存储(Shared设置)

    共享首选项(Shared Preferences)是Android提供的一种轻量级的数据存储方式,适用于保存少量的键值对数据,如用户设置、简单的配置信息等。在本文中,我们将深入探讨如何在Android中使用Shared Preferences进行数据...

    Android数据存储与访问

    本教程将深入探讨Android中的几种主要数据存储方式,包括Shared Preferences、SQLite数据库以及文件存储。 首先,我们来讨论**Shared Preferences**。Shared Preferences是一种轻量级的数据存储方式,适合于存储...

    android 数据存取Preferences

    为了实现这一需求,Android提供了多种数据存储方式,其中最简单易用的方式之一就是**Preferences**。 **Preferences**是一种轻量级的数据存储方案,其主要功能是帮助开发者存储应用程序的配置信息,如用户设置的...

    Sharedpreferences存储数据的使用方法_完整Demo_AndroidStudio

    Shared Preferences是Android提供的一种轻量级的数据存储机制,常用于保存应用程序中的配置设置或简单的键值对数据。它以XML格式存储,适合保存少量非结构化的数据。在这个"Sharedpreferences存储数据的使用方法_...

    android-数据存储(保存读取密码-附源码)

    在Android中,有多种数据存储方式,包括Shared Preferences、内部存储、外部存储、SQLite数据库以及Content Providers。对于简单的键值对,如密码,通常推荐使用Shared Preferences。下面是关于Shared Preferences的...

    Android学习之数据存储.zip

    Shared Preferences是Android中最简单的数据存储方式,用于保存键值对数据,通常用于存储用户的偏好设置。它提供了XML格式的键值存储,可以通过getSharedPreferences()方法获取并进行读写操作。例如,你可以用它来...

    android 数据存储之 Network

    "android 数据存储之 Network"这个主题主要关注如何在Android应用中有效地管理和存储从网络获取的数据。在这个话题中,我们将深入探讨几种常见的数据存储方法以及它们在网络数据处理中的应用场景。 1. **Shared ...

    Android源码——sharedPref学习源码.zip

    通过学习这个源码,开发者可以更好地理解 Shared Preferences 的工作原理,以及在优化数据存储时应考虑的因素,比如并发访问控制、数据一致性等问题。同时,这也为自定义存储机制或扩展现有功能提供了基础。

    安卓Android源码——学习之数据存储.zip

    Shared Preferences是Android提供的一种轻量级的数据存储方案,用于保存键值对形式的简单数据,如布尔值、整型、浮点型和字符串。数据存储在XML文件中,并且可以跨活动(Activities)共享。通过`SharedPreferences`...

    Android之数据存储(一)

    在Android开发中,数据存储是不可或缺的一部分,它涵盖了多种方式,包括SQLite数据库、Shared Preferences、内部存储、外部存储以及文件系统等。这篇博客"Android之数据存储(一)"可能是介绍这些存储方式的基础知识...

    安卓Andriod源码——学习之数据存储.zip

    1. **Shared Preferences**:这是一个轻量级的数据存储方式,通常用于保存应用的偏好设置或简单的键值对数据。通过SharedPreferences接口,开发者可以读写XML格式的键值对,支持基本数据类型。 2. **SQLite数据库**...

    24.数据存储(3).rar

    数据存储(3)"这个主题可能涵盖了多个关于Android平台数据存储的方法和技术,包括内部存储、外部存储、SQLite数据库、Shared Preferences以及Content Providers等。 1. **内部存储**:Android应用默认可以使用内部...

    AndroidAPI之数据储存[定义].pdf

    4. **SQLite Databases**:SQLite是一个轻量级的、关系型数据库,适用于结构化的数据存储。它为Android应用提供本地存储,可以创建表、执行查询等操作。SQLite数据库是私有的,每个应用有自己的数据库,并可以通过`...

    Android中使用SharedPeferences存储

    Shared Preferences是Android系统提供的一种轻量级的数据存储方式,主要用于存储一些简单的键值对数据,如用户偏好设置、应用配置等。这种方式非常适合保存少量非敏感数据,并且易于读写。下面我们将深入探讨如何在...

    Android学习之数据存储-IT计算机-毕业设计.zip

    通过这个Demo,你可以了解到Android数据存储的主要技术,包括Shared Preferences、SQLite数据库、内部存储、外部存储以及Content Providers。 1. Shared Preferences:这是Android中最简单的数据存储方式,适用于...

Global site tag (gtag.js) - Google Analytics