Android数据存储之SharedPreferences
来源:互联网 发布:三维软件培训机构 编辑:程序博客网 时间:2024/05/19 06:16
阶段一.基本知识
数据存储课分为以下几种形式:
1.SharedPreferences用来存储"键值对"格式的数据
2.File:FileInputStream和FileOutputStream
3.SQLite:提供了标准的数据库,支持SQL语句
4.NetWork
5.ContentProvider,实现不同应用程序之间的数据共享
阶段二.案例分析
SharePreferences用来保存软件配置参数,如QQ、手机
保存当前的音乐状态
1.首先是界面设计
只需用一个TextView来说明现在的音乐状态,字符串要在Strings里设置,以方便修改,把相应的音乐文件放在res-raw(需新建)文件夹中(注意在调用时不要调用成系统自带的,而引入系统包)
xml代码如下:
<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/musicStateShow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/currentMusic" /></RelativeLayout>
2.主要代码
采用分层的设计模式,把音乐的开关状态的代码单独放在一个包里,作为模型
代码如下:
public class Midiplayer {public MediaPlayer playermusic=null;public Context mcontext;//构造函数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();// TODO: handle exception}catch (IOException e) {// TODO: handle exceptione.printStackTrace();}playermusic.start();}
//关闭音乐public void freeMusic(){if(playermusic!=null){playermusic.stop();playermusic.release();}}}
MainActivity中的代码public class MainActivity extends Activity {private TextView musicStateShow;private Midiplayer midplayer;//设置当前音乐的状态,初始值设为关
private boolean musicState = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取TextViewde的值
musicStateShow = (TextView) findViewById(R.id.musicStateShow);midplayer = new Midiplayer(this);//第一个参数指定保存参数的xml的文件名,第二个参数参数指定操作模式,只能被本文所访问
SharedPreferences sharePreferences = getSharedPreferences("musicStateFile", MODE_PRIVATE);musicState = sharePreferences.getBoolean("musicState", false);if (musicState) {musicStateShow.setText("当前音乐状态为:开");midplayer.playMusic();} else {musicStateShow.setText("当前音乐状态为:关");midplayer.freeMusic();}}//按键弹起事件@Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) {// TODO Auto-generated method stub
//判断键值对音乐状态进行改变
switch (keyCode) {case KeyEvent.KEYCODE_DPAD_UP:musicStateShow.setText("当前音乐状态为:开");musicState = true;midplayer.playMusic();break;case KeyEvent.KEYCODE_DPAD_DOWN:musicStateShow.setText("当前音乐状态为:关");musicState = false;midplayer.freeMusic();break;default:break;}return super.onKeyUp(keyCode, event);}//按键按下事件@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {//退出应用程序是保存数据
if(keyCode==KeyEvent.KEYCODE_BACK){SharedPreferences sharedPreferences=getSharedPreferences("musicStateFile", MODE_PRIVATE);Editor editor=sharedPreferences.edit();//此时数据保存在内存中
editor.putBoolean("musicState", musicSate);//为防止频繁操作,永久保存到xml中,提高性能editor.commit();if(musicSate){midiPlayer.freeMusic();}finish();}return super.onKeyDown(keyCode, event);
}@Overridepublic 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;}}注:android模拟器中上下左右键不能用,要修改安装文件中.avd文件夹中的config.ini中的属性hw.dpad为yes3运行结果
- 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
- Java基础复习:接口
- Windows下的Memcache安装
- zoj1709-Oil Deposits
- CareerCup-4.5
- 《c和指针》笔记--包含位域结构体的内存对齐(32bit,GCC)
- Android数据存储之SharedPreferences
- 探索WebKit内核(三)------ WebSocket
- linux in the virtual machine share folders with Windows
- 多个缓存复制的问题
- jquery实现漂浮在网页右侧的qq在线客服插件
- C++编程思想----第9章、内联函数
- 为什么用Spring来管理Hibernate?
- Ajax中文乱码
- linux uncompress