???? 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(); } }}
?
?
显示效果:
?
?
演示以上例子,我们可以看到,每次退出应用程序后再打开,会保存退出前的状态。实例非常简单,所以也不作多的解释。
?