一、最简单的存储SharedPreferences
SharedPreferences是Android提供用来存储一些简单的配置信息的一种机制,它以键值对的方式存储,经常用于存储常见的欢迎语、登录用户名和密码等信息。
SharedPreferences提供了Android平台常规的Long长整型、Int整型、String字符串型的保存。两个Activity之间的数据传递除了可以通过Intent来传递外,还可以使用SharedPreferences来共享数据的方式实现。
在Activity1中编写如下代码:
Editor sharedata = getSharedPreferences("data",0).edit();
sharedata.putString("item","getSharedPreferences");
sharedata.commit();
在Activity2中编写如下代码:
SharedPreference sharedata = getSharedPreferences("data",0);
String data = sharedata.getString("item",null);
Log.v("cola","data="+data);
最后通过以下Java代码将数据显示出来:<SPAN class = hilitel>SharedPreferences</SPAN>sharedata = getSharedPreferences("data",0);
String data = sharedata.getString("item",null);
Log.v("cola","data="+data);
二、文件存储
和传统的Java中实现I/O的程序类似,在Android中,提供了openFileInput和openFileOuput方法来读取设备上的文件:
String FILE_NAME = "tempfile.tmp"; // 确定要进行文件操作的文件名
// 初始化
FileOutputStream fos = openFileOutput(FILE_NAME,Context.MODE_PRIVATE);
FileInputStream fIs = openFileOutput(FILE_NAME); // 创建写入流代码解释
通过上述代码只支持读取该应用目录下的文件,而读取非其自身目录下的文件时将会抛出异常。如果调用FileOutputStream时指定的文件不存在,则Android会自动创建,并且在默认情况下,写入时会覆盖原文件的内容,如果想要把新写入的内容附加到原文件内容后面,可以指定其模式为Context.MODE_APPEND。在默认情况下,使用openFileOuput方法创建的文件只能被其调用的应用使用,而其他应用无法读取这个文件。如果需要在不同的应用中共享数据,可以使用Content Provide实现。
如果应用需要一些额外的资源文件,例如,一些用来测试用户写的音乐播放器是否可以正常工作的MP3文件,可以将这些文件放在应用程序的/res/raw/下,如mydatafile.mp3,那么就可以在应用中使用getResources获取资源后,以openRawResource方法(不带后缀的资源文件名)打开这个文件,实现代码如下所示:
Resources myResources = getResources();
InputStream myFile = myResources.openRawResource(R.raw.myfilename);
三、最常用的SQLite
SQLite是一个轻量级的嵌入式数据库,是Andriod所带的一个标准的数据库,只有五种数据类型,分别是:NULL(空值)、INTEGER(整数)、REAL(浮点数)、TEXT(字符串)、BLOB(二进制数据)。其支持统一的SQL语句,可以利用SQL语句对数据进行增、删、改、查。
使用DatabaseHelper类继承SQliteOpenHelper类,并重写onCreate和onUpgrade方法。在onCreate()方法中首先构造一条SQL语句,然后调用db.execSQL(sql)执行SQL语句。SQliteOpenHelper是一个辅助类,此类主要用于生成一个数据库,并对数据库的版本进行管理。当调用这个类的方法getWritableDatabase()或getReadableDatabasw()方法时,如果当时没有数据,那么Android系统就会自动生成一个数据库。
四、ContentProvider存储
Android中的两个程序之间进行数据交换就是通过ContentProvider实现的。ContentProvider类实现了一组标准的方法接口,从而能够让其他的应用保存或读取此Content Provider的各种数据类型。在程序内可以通过实现Content Provider的抽象接口将自己的数据显示出来。外界可以通过这套标准、统一的接口和程序中的数据实现交互,既可以读取程序中的数据,也可以删除程序中的数据。
比较常见的接口是ContentResolver,外部程序可以通过ContentResolver接口访问ContentProvider提供的数据。在Activity中可以通过getContentResolver()得到当前应用的ContentResolver实例。ContentResolver提供的接口需要和ContentProvider中需要实现的接口相对应,常用的接口主要有以下几个:
query(Uri uri, String[] projection, String selection, String[] selectionArgs,StringsortOrder):通过Uri进行查询,返回一个Cursor;
insert(Uri url, ContentValues values):将一组数据插入到Uri指定的地方
updata(Uri uri, ContentValues values, String where, String[] selectionArgs):更新Uri指定位置的数据
delete(Uri url, String where, String[] selectionArgs):删除指定Uri且符合一定条件的数据。
五、网络存储网络存储即通过网络来实现数据的存储和获取,可以调用WebService返回的数据或是解析HTTP协议实现网络数据交互。具体需要熟悉java.net.*,Android.net.*这两个包的内容。