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,然后打开另一个,另一个就是就是你的数据存储文件。
你只需要点击右上角的存到桌面上,打开你就可以看见里边的信息了。
- Android数据存储之SharedPreferences
- Android数据存储之SharedPreferences
- Android--数据存储之SharedPreferences
- android数据存储之SharedPreferences
- Android之数据存储SharedPreferences
- Android数据存储之SharedPreferences
- android数据存储之--------- SharedPreferences
- Android数据存储之SharedPreferences
- Android数据存储之SharedPreferences
- android数据存储之SharedPreferences
- Android数据存储之SharedPreferences
- Android数据存储之SharedPreferences
- Android----数据存储之SharedPreferences
- Android数据存储之SharedPreferences
- Android数据存储之SharedPreferences
- Android之SharedPreferences数据存储
- Android数据存储之SharedPreferences
- Android数据存储之SharedPreferences
- 有一个单向循环链表队列,从头开始报数,当报到m或者m的倍数的元素出列,根据出列的先后顺序重新组成单向循环链表。
- linux 查询显卡型号
- 轻松使用Hadoop RPC
- opencv画轮廓的外界圆矩形椭圆等
- Ubuntu11.04上tftp服务的配置
- Android----数据存储之SharedPreferences
- 董璇明艳写真娇媚诱惑力十足
- JAVA 常用算法总结
- 黑马程序员---File类,涉及到递归手法
- k个数组的最小范围
- 浅析busybox内置的ftpd服务程序如何配置
- fread,fwrite
- 每天一个linux命令(56):netstat命令
- Android ViewPager使用详解