您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > Android 数据存储操作
eoemobile.com第8章Android的存储方式学习目标:•Android在存储方面的系统知识;•各类存储的使用及步骤;•SQLite方式的存储实现;•contentProvider方式的存储实现。8.1存储概述典型的桌面操作系统提供一种公共文件系统——任何应用软件可以使用它来存储和读取文件,该文件也可以被其他的应用软件所读取(会有一些权限控制设定)。Android采用了一种不同的系统,在Android中,所有的应用软件数据(包括文件)为该应用软件所私有。然而,Android同样也提供了一种标准方式供应用软件将私有数据开放给其他应用软件。这一章节描述一个应用软件存储和获取数据、开放数据给其他应用软件、从其他应用软件请求数据并且开放它们的多种方式。在Android中,可供选择的存储方式有SharedPreferences、文件存储、SQLite数据库方式、内容提供器(contentprovider)和网络,我们将在本章详细介绍。8.2SharedPreferences存储首先介绍的是SharedPreferences,其是Android提供用来存储一些简单的配置信息的一种机制,例如,一些默认欢迎语、登录的用户名和密码等。其以键值对的方式存储,使得我们可以很方便的读取和存入,下面看一个演示的例子。1.第一步在Eclipse中打开ex_SharedPreferences项目,其步骤如下所示。(1)新建一个项目。依次单击File→New→AndroidProject。(2)在新建项目的对话框中,选择Createprojectfromexistingsource。(3)单击浏览,找到ex_SharedPreferences项目,然后单击确定。其程序的目录结构如图8-2-1所示:官方社区eoeandroid.com《GoogleAndroid开发入门与实战》第八章样章eoemobile.com图8-2-1程序目录结构2.第二步单击运行项目,可以看到主界面如图8-2-2所示,这个界面的布局信息都在main.xml文件当中,在一个LinearLayout当中放了3个TextView和两个EditView,代码如下所示:?xmlversion=1.0encoding=utf-8?LinearLayoutxmlns:Android=:orientation=verticalAndroid:layout_width=fill_parentAndroid:layout_height=fill_parentTextViewAndroid:layout_width=fill_parentAndroid:layout_height=wrap_contentAndroid:text=SharedPreferencesdemo/TextViewAndroid:layout_width=fill_parentAndroid:layout_height=wrap_contentAndroid:text=Name:/EditTextAndroid:id=@+id/nameAndroid:layout_width=fill_parentAndroid:layout_height=wrap_contentAndroid:text=/TextViewAndroid:layout_width=fill_parentAndroid:layout_height=wrap_contentAndroid:text=Password:/EditTextAndroid:id=@+id/passwordAndroid:layout_width=fill_parentAndroid:layout_height=wrap_contentAndroid:password=trueAndroid:text=//LinearLayout如上代码表示:使用LinearLayout布局,其中放置三个用来做界面提示的文本框(TextView)组件和两个用于输入Name和Password(注意这里使用了Android:password=true)的编辑框(EditText)组件,运行这个应用,可以看到其界面如图8-1所示。官方社区eoeandroid.com《GoogleAndroid开发入门与实战》第八章样章eoemobile.com图8-2-2主界面在图8-1中,我们可以看到,初始状态下两个EditView都是空的,现在输入一些字符,如图8-2-3所示。图8-2-3输入Name和Password如图8-2所示,我们在Name文本框中中输入IceskYsl,在Password文本框中输入Password,然后退出这个应用。我们在应用程序列表中找到这个应用,重新启动,可以看到其使用了前面输入的Name和Password,如图8-2-4所示。官方社区eoeandroid.com《GoogleAndroid开发入门与实战》第八章样章eoemobile.com图8-2-4重新启动应用由此可见,应用保存了我们输入的Name和Password,现在来看看其实现的代码,在DBSharedPreferences.java文件中,此文件的代码如下所示:packageus.imnet.iceskysl.db;importAndroid.app.Activity;importAndroid.content.SharedPreferences;importAndroid.os.Bundle;importAndroid.widget.EditText;publicclassDBSharedPreferencesextendsActivity{publicstaticfinalStringSETTING_INFOS=SETTING_Infos;publicstaticfinalStringNAME=NAME;publicstaticfinalStringPASSWORD=PASSWORD;privateEditTextfield_name;//接收用户名的组件privateEditTextfiled_pass;//接收密码的组件/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//FindVIewfield_name=(EditText)findViewById(R.id.name);//首先获取用来输入用户名的组件filed_pass=(EditText)findViewById(R.id.password);//同时也需要获取输入密码的组件//RestorepreferencesSharedPreferencessettings=getSharedPreferences(SETTING_INFOS,0);//获取一个SharedPreferences对象Stringname=settings.getString(NAME,);//取出保存的NAMEStringpassword=settings.getString(PASSWORD,);//取出保存的PASSWORD//Setvaluefield_name.setText(name);//将取出来的用户名赋给field_namefiled_pass.setText(password);//将取出来的密码赋给filed_pass}@OverrideprotectedvoidonStop(){super.onStop();SharedPreferencessettings=getSharedPreferences(SETTING_INFOS,0);//首先获取一个SharedPreferences对象settings.edit().putString(NAME,field_name.getText().toString()).putString(PASSWORD,filed_pass.getText().toString()).commit();}//将用户名和密码保存进去官方社区eoeandroid.com《GoogleAndroid开发入门与实战》第八章样章eoemobile.com}通过上述代码可以看到,在onCreate中使用findViewById得到两个EditView后,使用getSharedPreferences取得SharedPreferences对象settings,然后使用getString取得其中保存的值,昀后使用setText将其值设置为两个EditText的值。而在程序运行onStop过程,也就是在程序退出时,首先使用getSharedPreferences得到settings,然后调用edit()方法使其处于可以编辑状态,并使用putString将两个EditText中的值保存起来,昀后使用commit()方法提交即可保存。小知识:SharedPreferences保存到哪里去了?SharedPreferences是以XML的格式以文件的方式自动保存的,在DDMS中的FileExplorer中展开到/data/data/packagename/shared_prefs下,以上面这个为例,可以看到一个叫做SETTING_Infos.xml的文件,如图8-2-5所示。图8-2-5SharedPreferences文件将其导出到设备中,可以打开这个文件,看到其代码内容为:?xmlversion='1.0'encoding='utf-8'standalone='yes'?mapstringname=PASSWORDPassword/stringstringname=NAMEIceskYsl/string/map小知识:我们可以通过「getXXX」函数,从SharedPreferences中读取不同类型的内容,例如,上面我们使用[getString]读取String类型的内容。注意:Preferences只能在同一个包内使用,不能在不同的包之间使用。8.3文件存储前面介绍的SharedPreferences存储方式非常方便,但是其只适合存储比较简单的数据,如果需要存储更多的数据,可行选择的方式有好几种,这里先给读者介绍文件存储的方法。和传统的Java中实现I/O的程序类似,在Android中,其提供了openFileInput和openFileOuput方法读取设备上的文件,下面看个例子代码,具体如下所示:StringFILE_NAME=“tempfile.tmp”;//确定要操作文件的文件名//Createanewoutputfilestreamthat’sprivatetothisapplication.官方社区eoeandroid.com《GoogleAndroid开发入门与实战》第八章样章eoemobile.comFileOutputStreamfos=openFileOutput(FILE_NAME,Context.MODE_PRIVATE);//初始化//Createanewfileinputstream.FileInputStreamfis=openFileInput(FILE_NAME);//创建写入流上述代码中两个方法只支持读取该应用目录下的文件,读取非其自身目录下的文件将会抛出异常。需要提醒的是,如果调用FileOutputStream时指定的文件不存在,Android会自动创建它。另外,在默认情况下,写入的时候会覆盖原文件内容,如果想把新写入的内容附加到原文件内容后,则可以指定其mode为
本文标题:Android 数据存储操作
链接地址:https://www.777doc.com/doc-5940325 .html