Android----数据存储之SharedPreferences

来源:互联网 发布:调研数据分析报告 编辑:程序博客网 时间:2024/05/26 02:19
       Android的数据存储和访问有三种方式:SharedPreferences、文件File和SQLite。前两种方式用于存储简单的数据,而SQLite是Android的专用数据库,其所用的也是和SQL Server和Mysql的语法相似的。这一节主要讲一下SharedPreferences这种方式存储数据。

         我们用一个例子能够更好的理解,就用按上下键按钮设置音乐的开关并且保存起来,这一次将这个程序关闭后,如果下一次开启时,还能保留这一次的音乐开关的设置,并且也能播放音乐。(其中有一个问题,就是模拟器中得上下键启用问题,默认情况下是不能用的,我们要修改SDK里面的config.ini文件的hpad的no改为yes即可

布局文件很简单:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <TextView        android:id="@+id/text"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" /></RelativeLayout>


我们要提取出来一个Model类musicModel,用于存储按键开关的方法,以后要使用到可以直接使用这个类。

musicModel.java

public class musicModel {private MediaPlayer player;private Context context;public musicModel(Context context){this.context = context;}/* 播放音乐 */public void playMusic(){/* 装载资源中的音乐 */         player = MediaPlayer.create(context,R.raw.star);         /* 设置是否循环 */         player.setLooping(true);         try {player.prepare();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}         player.start();}/* 停止音乐 */public void stopMusic(){if(player != null){player.stop();player.release();}}}


然后是MainActivity.java

public class MainActivity extends Activity {private musicModel model;private TextView textView;private Boolean musicState;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                model = new musicModel(this);        textView = (TextView)this.findViewById(R.id.text);                SharedPreferences preferences = getSharedPreferences("musicFile", MODE_PRIVATE);        musicState = preferences.getBoolean("musicState", false);                if(musicState){        textView.setText("当前状态是:开");    model.playMusic();        }else{        model.stopMusic();        }    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }       /* 按键按下去的事件 */     /** * 按键按下事件 */    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if(keyCode == event.KEYCODE_BACK){    SharedPreferences preferences =getSharedPreferences("musicFile", MODE_PRIVATE);    Editor editor = preferences.edit();    editor.putBoolean("musicState", musicState);    editor.commit();    if(musicState){    model.stopMusic();    }    finish();    }    return super.onKeyDown(keyCode, event);    }        /* 按键抬起的事件 */    /** * 按键弹起事件 */    @Override    public boolean onKeyUp(int keyCode, KeyEvent event) {     switch(keyCode){    case KeyEvent.KEYCODE_DPAD_UP:    textView.setText("当前状态是:开");    musicState = true;    model.playMusic();    break;    case KeyEvent.KEYCODE_DPAD_DOWN:    textView.setText("当前状态是:关");    musicState = false;    model.stopMusic();    break;    }    return super.onKeyUp(keyCode, event);    }}


例子虽然简单,举一反三是关键!!!

我们可以看一下储存的数据文件。选择DDS,然后找到File Explorer,里边有一个data,下边还有一个data,找到你的应用程序的包名,然后打开就有两个文件夹,一个是lib,然后打开另一个,另一个就是就是你的数据存储文件。

你只需要点击右上角的存到桌面上,打开你就可以看见里边的信息了。

原创粉丝点击