Android 数据存储

原创 2016年05月31日 21:04:30

转载请注明来源: http://blog.csdn.net/kjunchen/article/details/51549097

Android Data Storage

一、 存储选择

Android为我们持久化保存应用数据提供了几种可供选择的方法,具体选择可根据自己的特殊需求。

  • Shared Preferences: 用键值对的方式存储私有的原始数据。

  • Internal Storage: 在内存中存储私有数据。

  • Internal Storage: 在可共享的外部存储上存储公开的数据。

  • SQLite Databases: 在私有数据库上存储结构化数据

  • Network Connection: 网络存储

  • Shared Preferences:

二、 使用外部存储(Using the External Storage)

每一个兼容的Android设备都支持一个公用的外部存储,可以让你使用它去保存文件。这个可以是一个可移除的存储设备(如SD卡)或者是不可移除的内部存储。当用户通过USB将大量的存储文件转移到电脑上时,就可以对保存在外部存储器的文件进行读取和修改。
警告:如果用户在电脑上使用外部存储器或者移除外部存储器,那么外部存储就不可用了,此时强制保存在外部存储上是不安全的。所有的应用可以读写放在外部存储器中的文件,并且用户可以删除他们。

1. 获得外部存储权限

为了在外部存储器上读取或者写入文件,你的app必须获得READ_EXTERNAL_STORAGE或者WRITE_EXTERNAL_STORAGE系统权限。如:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

如果你既要读取文件又要写入文件,那么你只需要申请WRITE_EXTERNAL_STORAGE权限即可,因为它也隐含性的获得了读取的入口。

注:从Android4.4开始,在你自己的app中读取或写入文件可以不获得这些许可的。

2. 检查外部存储器的可用性

当你在外部存储器上做任何操作之前,你都应该调用getExternalStorageState()方法去检查外部存储器是否可用。因为你的存储器可能已经安装在电脑上、移除、只读或者其他的状态。

/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}

/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state) ||
        Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}

调用getExternalStorageState()方法返回的状态可能是你要检查的,例如,存储是否已经开始共享,完全失踪,已经彻底移除等等。当你的应用需要存储入口的时候你可以使用这些状态去通知你的用户更多的信息。

三、 使用SQLite数据库(Using Databases)

Android对SQLite数据库提供全面的支持。在应用的任何类中都可以通过名字创建数据库,但不能在应用外部。

创建一个新的SQLite数据的推荐做法是创建一个SQLiteOpenHelper的子类并重写onCreate()方法。在数据库里可以执行一条SQLite命令去创建表。如:

public class DictionaryOpenHelper extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 2;
    private static final String DICTIONARY_TABLE_NAME = "dictionary";
    private static final String DICTIONARY_TABLE_CREATE =
                "CREATE TABLE " + DICTIONARY_TABLE_NAME + " (" +
                KEY_WORD + " TEXT, " +
                KEY_DEFINITION + " TEXT);";

    DictionaryOpenHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DICTIONARY_TABLE_CREATE);
    }
}

使用自定义的构造器获得SQLiteOpenHelper实例,调用getWritableDatabase() and getReadableDatabase()方法分别从数据库中进行写和读操作。这两个方法都会返回一个SQLiteDatabase对象,代表数据库并且为SQLite提供操作方法。

欢迎加QQ群交流: 365532949
Homepage: http://junkchen.com

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android数据存储之External Storage外部存储

所有 Android 设备都有两个文件存储区域:“内部”和“外部”存储。这些名称在 Android 早期产生,当时大多数设备都提供内置的非易失性内存(内部存储),以及移动存储介质,比如micro SD...

Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)

转自:http://blog.csdn.net/vipzjyno1/article/details/25248021 在android的应用层中,涉及到很多应用框架,例如:Service...

android 数据存储与访问

  • 2012年07月15日 18:14
  • 1.9MB
  • 下载

Android数据存储之GreenDao 3.0 详解

GreenDao 介绍: greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。如下图所示: ...

Android数据存储与访问

  • 2013年01月22日 13:16
  • 2.31MB
  • 下载

Android中的数据存储

  • 2013年08月14日 22:27
  • 60KB
  • 下载

Android——数据存储(四种方式之二)读写SD卡

Android——数据存储(四种方式) 1.SharedPrefereces 只能保存一些简单的数轻量级.XML  存储文件名, 数据保存在data/data/basepackage/share...

android数据存储培训资料

  • 2013年06月28日 12:39
  • 22.21MB
  • 下载

android 中的数据存储

  • 2013年05月29日 20:01
  • 2.63MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 数据存储
举报原因:
原因补充:

(最多只允许输入30个字)