Shared Preferences 类似于我们经常使用ini配置文件,用来保存应用程序的一些属性设置,在Android平台常用于存储较简单的参数设置。例如,保存上一次用户所做的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置,类似于我们常用的eclipse配置文件。
如何使用Shared Preferences,我们可以通过下面的例子来了解:
package com.liyf.android.preferences;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MyPreferencesActivity extends Activity {
private MIDIPlayer mPlayer = null;
private boolean mbMusic = false;
private TextView mTextView = null;
private Button mPlayButton = null;
private Button mStopButton = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 初始化
mTextView = (TextView) findViewById(R.id.TextView01);
mPlayButton = (Button) findViewById(R.id.play);
mStopButton = (Button) findViewById(R.id.stop);
mPlayer = new MIDIPlayer(this);
// 装载数据,取得活动的Preferences对象
SharedPreferences settings = getPreferences(Activity.MODE_PRIVATE);
//从Preferences获取值
mbMusic = settings.getBoolean("bmusic", false);
if(mbMusic) {
mTextView.setText("当前音乐状态:开");
mbMusic = true;
mPlayer.playMusic();
} else {
mTextView.setText("当前音乐状态:关");
}
// 播放按钮事件
mPlayButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(mbMusic) // 如果已经是播放状态就返回,不是则播放音乐
{
return;
} else
{
mbMusic = true;
mPlayer.playMusic();
mTextView.setText("当前音乐状态:开");
}
}
});
mStopButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(!mbMusic)
{
return;
} else
{
mbMusic = false;
mPlayer.stopMusic();
mTextView.setText("当前音乐状态:关");
}
}
});
}
/**
* 按钮离开的事件,关闭程序时保留数据到Preferences
*/
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK)
{
// 得到SharedPreferences对象
SharedPreferences uiState = getPreferences(0);
// 取得修改的对象
SharedPreferences.Editor editor = uiState.edit();
// 写入值
editor.putBoolean("bmusic", mbMusic);
// 提交
editor.commit();
if(mbMusic)
{
mPlayer.stopMusic();
}
}
return super.onKeyUp(keyCode, event);
}
}
package com.liyf.android.preferences;
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 stopMusic() {
if(playerMusic != null) {
playerMusic.stop();
playerMusic.release();
}
}
}
显示效果:
演示以上例子,我们可以看到,每次退出应用程序后再打开,会保存退出前的状态。实例非常简单,所以也不作多的解释。