当前位置:操作系统 > 安卓/Android >>

Android数据存储机制

数据是应用的核心。下面我们来详细看看Android系统的数据存储和共享机制。

Android为我们提供了4种数据存储方式,但由于存储的这些数据都是某个应用程序私有的,所以它又为我们提供了一种在不同应用程序之间共享数据的机制,即ContentProvider。

下面我们首先将分别介绍Android的4种数据存储方式:Shared Preferences、Files、SQLite、NetWork,最后我们将详细介绍Android的Content Provider机制。

一、Android数据存储之SharedProviences
它是Android提供的用来存储一些简单配置信息的一种机制,例如:登录用户的用户名与密码。其采用了Map数据结构来存储数据,以键值对的方式存储,可以简单的读取与写入,具体实例如下:
[java] //读取SharedPreference  
void  readSharedPreferences() 

    String  strName,strPassword; 
    SharedPreferences   user = getSharedPreferences(“user_info”,0); 
    strName = user.getString(“NAME”,””); 
    strPassword = user getString(“PASSWORD”,””); 

//往SharedPreference中写入内容  
void  writeSharedPreferences(String  strName,String strPassword) 

    SharedPreferences   user = getSharedPreferences(“user_info”,0); 
    //使其处于编辑状态  
    uer.edit(); 
    user.putString(“NAME”, strName); 
    user.putString(“PASSWORD” ,strPassword); 
    user.commit(); 

//读取SharedPreference
void  readSharedPreferences()
{
    String  strName,strPassword;
    SharedPreferences   user = getSharedPreferences(“user_info”,0);
    strName = user.getString(“NAME”,””);
    strPassword = user getString(“PASSWORD”,””);
}
//往SharedPreference中写入内容
void  writeSharedPreferences(String  strName,String strPassword)
{
    SharedPreferences   user = getSharedPreferences(“user_info”,0);
    //使其处于编辑状态
    uer.edit();
    user.putString(“NAME”, strName);
    user.putString(“PASSWORD” ,strPassword);
    user.commit();
}数据读取与写入的方法都非常简单,只是在写入的时候有些区别:先调用edit()使其处于编辑状态,然后才能修改数据,最后使用commit()提交修改的数据。实际上SharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中的File Explorer中的/data/data/<package name>/shares_prefs下。以上面的数据存储结果为例,打开后可以看到一个user_info.xml的文件,打开后可以看到:
[java] <?xml version=”1.0″ encoding=”UTF-8″?> 
<map> 
    <string name=”NAME”>moandroid</string> 
    <string name=” PASSWORD”>SharedPreferences</string> 
</map> 
<?xml version=”1.0″ encoding=”UTF-8″?>
<map>
    <string name=”NAME”>moandroid</string>
    <string name=” PASSWORD”>SharedPreferences</string>
</map>使用SharedPreferences是有些限制的:只能在同一个包内使用,不能在不同的包之间使用

二、Android数据存储之Files(文件)
文件方式是一种较常用的存储方法,在Android中读/写文件的方法,与Java中实现I/O的程序是完全一样的,Android为我们提供了openFileInput()和openFileOutput()方法来读取设备上的文件。具体示例如下:
[java] //读文件  
private void read() {   
        try {   
            FileInputStream inputStream = this.openFileInput("music.cfg");   
            byte[] bytes = new byte[1024];   
            ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();   
            while (inputStream.read(bytes) != -1) {   
                arrayOutputStream.write(bytes, 0, bytes.length);   
            }   
            inputStream.close();   
            arrayOutputStream.close();   
            mbMusic = Boolean.getBoolean(new String(arrayOutputStream.toByteArray()));   
        } catch (FileNotFoundException e) {   
            e.printStackTrace();   
        } catch (IOException e) {   
            e.printStackTrace();   
        }   
    }   
//写文件  
private void writeFile() {   
    try {   
        /** 根据用户提供的文件名,以及文件的应用模式,打开一个输出流
         * openFileOutput(String name, int mode);
         * 第一个参数,代表文件名称,注意这里的文件名称不能包括任何的/或者/这种分隔符,只能是文件名
         *          该文件会被保存在/data/data/应用名称/files/music.cfg
         * 第二个参数,代表文件的操作模式
         *          MODE_PRIVATE 私有(只能创建它的应用访问) 重复写入时会文件覆盖
         *          MODE_APPEND  私有   重复写入时会在文件的末尾进行追加,而不是覆盖掉原来的文件
         *          MODE_WORLD_READABLE 公用  可读
         *          MODE_WORLD_WRITEABLE 公用 可读写
         *  
         */   
        FileOutputStream outputStream = openFileOutput("music.cfg",   
            Activity.MODE_PRIVATE);   
        outputStream.write(String.valueOf(mbMusic).getBytes());   
        outputStream.flush();   
        outputStream.close();   
     &n

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,