关闭

Android 数据存储

标签: android数据存储
443人阅读 评论(0) 收藏 举报
分类:

转载请注明来源: 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

0
0
查看评论

安卓数据存储总结及详解

前言(首先说说什么存储的几个概念) 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的时候又是清除的哪里的数据? 在Android开发中我们常常听到这样几个概念,内存,内部存储,...
  • qq_27280457
  • qq_27280457
  • 2016-06-30 09:27
  • 2607

解读Android之数据存储方案

Android提供了一些永久保存数据的方法,可以根据具体的需求决定使用哪种方式存储,例如私有数据,外部程序是否可以访问等等。有以下几种方法存储:Shared Preferences;Internal Storage;External Storage;SQLite Database;Network C...
  • wangyongge85
  • wangyongge85
  • 2015-09-09 08:54
  • 57717

Android网络与数据存储01

概要:这次制作App的引导页,主要用到2个知识“SharedPreferences 和 ViewPager” Genymotion的Android模拟器,版本5.1.0以下是默认root的,可以使用RootExplorer4软件操作系统目录,其它包括SDK内的官方模拟器……洗洗睡吧……太烦了,还不如...
  • xiejun188
  • xiejun188
  • 2016-08-09 20:44
  • 301

Android数据存储几种方式用法总结

Android数据存储几种方式用法总结 1、概述   Android提供了5种方式来让用户保存持久化应用程序数据。根据自己的需求来做选择,比如数据是否是应用程序私有的,是否能被其他程序访问,需要多少数据存储空间等,分别是: &#...
  • xiyiyindie
  • xiyiyindie
  • 2016-12-11 12:16
  • 1506

实验任务8 Android数据存储和访问---书籍的增删改查

本次实验的任务是实现书籍的增删改查,其实我们可以对数据进行的操作也就无非四种,即CRUD。其中C代表添加(Create),R代表查询(Retrieve),U代表更新(Update),D代表删除(Delete)。每一种操作又各自对应了一种SQL命令,如果你比较熟悉SQL语言的话,一定会知道添加数据时使...
  • bzwulian
  • bzwulian
  • 2016-11-16 21:30
  • 259

Android实验七之SQLite数据库存储

实验效果图: LogCat中打印出的数据:   代码:   MainActivity.java package com.example.sqlist; import com.example.helper.MyDataHelper; import android.os....
  • seven08290
  • seven08290
  • 2016-11-19 18:59
  • 514

Android学习笔记十二.Android数据存储与IO.SharedPreferences

SharedPreferences     对于应用程序的数据输入、输出,如果是应用程序只是少量数据需要保存,那么使用普通文件就可以了(SharedPrefereces);但如果应用程序有大量数据需要存储、访问,就需要借助数据库了。Android系统内置了SQLite数据库,SQ...
  • u012637501
  • u012637501
  • 2015-01-07 21:35
  • 1119

Android 数据存储五种方式使用与总结

部分内容来源于官方文档翻译, 对SharedPreferences; 文件存储(内部存储读写,保存编译文件,保存内存缓存文件,外部存储读写); SQLite使用; ContentProvider使用; 网络请求(HttpUrlConnection和HttpClient的GET与POST请求,Andr...
  • Amazing7
  • Amazing7
  • 2016-05-18 16:06
  • 30200

android的五种存储机制

Android提供了5种方式存储数据: --使用SharedPreferences存储数据; --文件存储数据;  --SQLite数据库存储数据; --使用ContentProvider存储数据; --网络存储数据; Preference,File,DataB...
  • heminghung
  • heminghung
  • 2016-05-29 14:26
  • 833

Android中数据储存方式的几种工具类

一.在Android开发中数据的存储方式有五种:   1.使用SharedPreferences进行存储:      适用范围存储小量的数据,储存的格式有字符串类型及基本数据类型。一般用于存储应用程序的配置信息,如用户设置的App中的设置信息是否打开...
  • wangyongyao1989
  • wangyongyao1989
  • 2017-04-15 12:55
  • 478
    个人资料
    • 访问:171935次
    • 积分:2056
    • 等级:
    • 排名:千里之外
    • 原创:39篇
    • 转载:0篇
    • 译文:4篇
    • 评论:55条
    切磋技艺

    欢迎进群交流、切磋技艺


    QQ群:365532949

    博客专栏