您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > Android应用开发――实验五
1.1实验要求1)学习使用4种数据存储的方式;2)熟练SQLite数据库的使用;3)学习使用ContentProviders来实现各个不同应用程序之间数据的传递和共享。1.2实验主要步骤1)阅读文献《Android应用开发揭秘》第六章,了解数据存储的基本方法;2)运行示例程序,分析程序代码,学习使用SharedPreferences、Files、Network等数据存储技术;3)阅读文献,了解SQLite数据库;4)运行示例程序,分析程序代码,学习SQLite编程,熟练SQLite数据库的基本操作;5)运行示例程序,分析程序代码,熟练使用ContentProviders,学习查询数据、修改数据、添加数据、删除数据、创建ContentProvider等方法。实验五姓名:马征学号:2011303502班级:14011107一、Android中的数据存储基本方法1、Android数据储存初步了解通过学习,我了解到,数据存储时程序最为基本的问题,所有的企业系统和应用软件都必须解决这个问题,数据存储必须用一种合理的方式来保存,在保证数据不能丢失的前提条件下,可以有效、简便的使用和更新这些数据。在Android中,我通过阅读pdf了解到一共提供了四中数据存储方式,然而由于存储的数据都是应用程序私有的,所以在其他的应用程序使用这些数据的时候,需要使用Android提供的ContentProviders,先列举四种数据存储方式:SharedPreferences用来存数“key-valueparies”格式的数据,是一个轻量级的键值存储机制,只可以存储基本的数据类型Flies通过FileInputStream和FileOutputStream对文件惊醒操作,但是在Android中,文件是一个应用程序私有的,所以一个应用程序无法读写其他应用程序的文件SQLiteAndroid提供的一个标准的数据库文件,支持SQL语句Network通脱网络来存储和获得数据这四种存储方式的特点:SharedPreferences:主要针对系统配置信息的保存。Files:包需要保存的东西通过文件的形式记录下来,当需要这些数据的时候,通过读取这个文件来获取这些数据。Ps:由于Android是Linux核心的,所以在Android中,文件也是Linus的形式SQLite:是一个开源的关系型数据库,具有ACID的特性,可以用来存储大量的数据,并且能够容易的对数据进行使用、更新、维护。Network:用于将数据存储于网络,需要使用java.net.*和android.net.*类。2、Android数据存储中的SharedPreferencesSharedPreferences类似于常用的ini文件,保存应用程序的属性设置。通过getPreferences()方法来获得Preferences对象通过“SharedPreferences.Editoreditor=uiState.edit();”取得编辑对象通过“editor.put()”方法添加数据通过commit()方法保存这些数据。通过Activity。getPreferences()保存数据私有。publicclassActivity01extendsActivity{privateMIDIPlayermMIDIPlayer=null;privatebooleanmbMusic=false;privateTextViewmTextView=null;/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);mTextView=(TextView)this.findViewById(R.id.TextView01);mMIDIPlayer=newMIDIPlayer(this);/*装载数据*///取得活动的preferences对象.SharedPreferencessettings=getPreferences(Activity.MODE_PRIVATE);//取得值.mbMusic=settings.getBoolean(bmusic,false);if(mbMusic){mTextView.setText(当前音乐状态:开);mbMusic=true;mMIDIPlayer.PlayMusic();}else{mTextView.setText(当前音乐状态:关);}}publicbooleanonKeyDown(intkeyCode,KeyEventevent){if(keyCode==KeyEvent.KEYCODE_BACK){/*这里我们在推出应用程序时保存数据*///取得活动的preferences对象.SharedPreferencesuiState=getPreferences(0);//取得编辑对象SharedPreferences.Editoreditor=uiState.edit();//添加值editor.putBoolean(bmusic,mbMusic);//提交保存editor.commit();if(mbMusic){mMIDIPlayer.FreeMusic();}this.finish();returntrue;}returnsuper.onKeyDown(keyCode,event);}}拓展:了解在/data/data目录下产生的文件夹下使用了Preferences,会产生一个shared_prefs文件夹,是我们保存的数据,例子中保存的是Activity01.xml文件3、数据存储FilesAndroid中可以在设备本身的存储设备或者外接的存储设备中创建用于保存数据的文件,在默认的状态下,文件是不能在不同的程序间共享的。用文件来存数数据可以通过openFileOutput方法打开一个文件通过load方法来获取文件中的数据,通过deleteFile方法可以删除一个指定的文件。publicclassActivity01extendsActivity{privateMIDIPlayermMIDIPlayer=null;privatebooleanmbMusic=false;privateTextViewmTextView=null;/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);mTextView=(TextView)this.findViewById(R.id.TextView01);mMIDIPlayer=newMIDIPlayer(this);/*读取文件数据*/load();if(mbMusic){mTextView.setText(当前音乐状态:开);mbMusic=true;mMIDIPlayer.PlayMusic();}else{mTextView.setText(当前音乐状态:关);}}publicbooleanonKeyUp(intkeyCode,KeyEventevent){switch(keyCode){caseKeyEvent.KEYCODE_DPAD_UP:mTextView.setText(当前音乐状态:开);mbMusic=true;mMIDIPlayer.PlayMusic();break;caseKeyEvent.KEYCODE_DPAD_DOWN:mTextView.setText(当前音乐状态:关);mbMusic=false;mMIDIPlayer.FreeMusic();break;}returntrue;}publicbooleanonKeyDown(intkeyCode,KeyEventevent){if(keyCode==KeyEvent.KEYCODE_BACK){/*退出应用程序时保存数据*/save();if(mbMusic){mMIDIPlayer.FreeMusic();}this.finish();returntrue;}returnsuper.onKeyDown(keyCode,event);}/*装载、读取数据*/voidload(){/*构建Properties对对象*/Propertiesproperties=newProperties();try{/*开发文件*/FileInputStreamstream=this.openFileInput(music.cfg);/*读取文件内容*/properties.load(stream);}catch(FileNotFoundExceptione){return;}catch(IOExceptione){return;}/*取得数据*/mbMusic=Boolean.valueOf(properties.get(bmusic).toString());}/*保存数据*/booleansave(){Propertiesproperties=newProperties();/*将数据打包成Properties*/properties.put(bmusic,String.valueOf(mbMusic));try{FileOutputStreamstream=this.openFileOutput(music.cfg,Context.MODE_WORLD_WRITEABLE);/*将打包好的数据写入文件中*/properties.store(stream,);}catch(FileNotFoundExceptione){returnfalse;}catch(IOExceptione){returnfalse;}returntrue;}}拓展学习:根据pdf的知识,找到了示例中数据的存储位置,为一个.cfg格式的文件。Ps:如果在开发应用程序是,需要通过加载一个文件的内容来初始化程序,可以在编译程序之前在res/raw/tempFile中建立一个static文件,可以在程序中通过Resources.openRawResource方法返回一个InputStream对象,直接读取文件的内容。4、数据存储Network通过网络来过去和博阿存数据资源,需要设备保持网络连接状态,存在一些限制,根据pdf中的介绍,我学习了在应用程序退出时,将数据发送到电子邮件中进行备份。首先在模拟器中配置电子邮件账户。可以实现数据的备份和从网络上对数据的读取:publicclassActivity01extendsActivity{privateintmiCount=0;/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);miCount=1000;}publicbooleanonKeyDown(intkeyCode,KeyEventevent){if(keyCode==KeyEvent.KEYCODE_BACK){//退出应用程序时保存数据/*发送邮件的地址*/Uriuri=Uri.parse(mailto:fengsheng.studio@hotmail.com);/*创建Intent*/Intentit=newIntent(Intent.ACTION_SENDTO,uri);/*设置邮件的主题
本文标题:Android应用开发――实验五
链接地址:https://www.777doc.com/doc-4376469 .html