赞
踩
一. 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中。。。),查看步骤要求:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。