能够将数据储存在内置或可移动存储,数据库,网络。sharedpreference。

android能够使用Content provider来使你的私有数据暴漏给其它应用程序。

一.sharedpreference

得到sharedpreference的两种方法:

1.getSharedPreferenced():使用这种方法你能够定义多个preference文件

2.getPreferenced():仅仅创建一个preference文件

sharedpreference不是严格用来储存“用户配置”的。比方说储存用户的铃声。若你的应用程序对创建用户配置感兴趣,能够使用PreferenceActivity、

二.内置储存

创建并写一个文件的步骤:

使用openFileOutPut得到FileOutputStream。通过这个流来写数据。

从内置储存读数据步骤:

使用openFileInput得到FileInputStream,通过这个流来读数据。

假设你想在编译的时候在你应用中保存一个静态的文件。能够保存在res/raw/路径,通过调用openRawResource传入R.raw.<filename>打开。

假设你想缓存数据而不是将数据持久化,那当你想缓存数据时能够使用openCacheDir()来打开一个内部储存空间的文件。

当设备的内置储存空间不足时。Android会删除这些文件来恢复空间。然而你不必主动删除这些文件,可是你应该对缓存文件占的空间大小做个限制,不如说1M.

其它实用的方法:

getFileDir():得到你内置文件的绝对路径。

getDir()创建(或打开一个存在)的路径。

deleteFile()删除一个内置文件

fileList()返回当前应用程序中全部内置文件列表

三.外部储存

假设你既想write外部储存,又想read外部储存,仅仅需请求 WRITE_EXTERNAL_STORAGE 的权限。

<manifest ...>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
                     android:maxSdkVersion="18" />
    ...
</manifest>

(当版本号低于18的使用加入权限)

从Android4.4開始,若想使用应用程序的私有文件不许要读写外部储存的权限。

能够通过将文件放入Music/,Pictures/,RingTone/来和其它应用分享这个文件。

若你不想系统的多媒体浏览器能够浏览你的多媒体文件,能够在你的目录中加入.nomedia的文件。

得到公共目录的方法 getExtenrnalStoragePublicDirectory()将參数DIRECTORY_MUSIC/DIRECTORY_PICTURES/DIRECTORY_RINGTONE传入。

以下为在公共图片目录下加入一个相冊:

public File getAlbumStorageDir(String albumName) {
    // Get the directory for the user's public pictures directory.
    File file = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES), albumName);
    if (!file.mkdirs()) {
        Log.e(LOG_TAG, "Directory not created");
    }
    return file;
}

你能够使用getExtenrnalFileDir()在外置储存中得到私有多媒体储存路径

当用户删除你的应用的时候这些文件将会被删除

这些文件不会被系统的多媒体浏览器发现可是对于有READ_EXTERNAL_STORAGE权限的应用是可access的。

通过getExternalCacheDir()来得到外置储存空间的缓存区。当应用程序被卸载时。这些文件也将被删除。

须要细致管理缓存区。删除那些在你app生命周期不再使用的缓存

四.使用数据库

五.使用网络

android数据储存之存储方式的更多相关文章

  1. Android 开发笔记___存储方式__共享参数__sharedprefences

    Android 的数据存储方式有四种,这次是[共享参数__sharedprefences] 听起来挺别扭的,平时看到的app里面,当用户删除了一些软件以后下次安装,发现原来的设置还在,这种情况就是把一 ...

  2. Android数据储存之SQLiteDatabase 简单增删改查

    SQLiteDatabase 使用 SQLiteDatabase提供如下方法来打开一个文件对应的数据库: openDatabase(String path, SQLiteDatabase.Cursor ...

  3. android数据储存之应用安装位置

    原文地址:http://developer.android.com/guide/topics/data/install-location.html#Compatiblity 从API8開始,你能够将你 ...

  4. Android数据储存之SharedPreferences总结

    写在前面:本文是我参考李刚老师的<疯狂Android讲义>以及API所写的读书笔记,在此表示感谢,本人小白,如有错误敬请指教. SharedPreferences的使用背景: 有时候,应用 ...

  5. Android数据储存之SQLiteDatabase SQLiteOpenHelper类的简单使用

    SQLiteOpenHelper 简介: SQLiteOpenHelper是一个借口!所以不能直接实例化!那我们想要得到SQLiteOpenHelper对象就需要实现该接口!创建该接口的实现类对象! ...

  6. Android数据储存之File

    openFileOutStream 和 openFileInStream FileInputStream fileInputStream = openFileInput(name);  打开应用下文件 ...

  7. Android数据储存之SharedPreferences

    Android中SharedPreferences通常与Editor连用 接口SharedPreferences常用方法: boolean contains(String str):判断SharedP ...

  8. Android数据存储方式

    Android提供了5种方式存储数据: 1.使用SharedPreferences存储数据:它是Android提供的用来存储一些简单配置信息的一种机制,采用了XML格式将数据存储到设备中.只能在同一个 ...

  9. Android 数据存储五种方式

    1.概述 Android提供了5种方式来让用户保存持久化应用程序数据.根据自己的需求来做选择,比如数据是否是应用程序私有的,是否能被其他程序访问,需要多少数据存储空间等,分别是: ① 使用Shared ...

随机推荐

  1. [HNOI2008]越狱 快速幂 逆推

    考虑越狱的情况有些复杂,不如考虑总情况减去不越狱的情况. 显然,总情况为 $m^n$ 种,不越狱的情况为 $m*(m-1)*(m-1)*(m-1)....$ 即为 $m*(m-1)^(n-1)$. 做 ...

  2. linux下mysql 查看默认端口号与修改端口号方法

    一.查看默认端口号 1.登录mysql [root@localhost ~]# mysql -uroot -pEnter password: 输入数据库密码: 2.使用show global vari ...

  3. 多任务-进程之Queue的进程间通信

    1.经过线程和进程的对比,不难的知道,线程和进程有相当大的区别,如全局变量资源不能够共享. 2.在不同的进程间,如何实现通信呢? 需要提及的一个概念就是Queue,它是一个消息队列,下面通过一个例子来 ...

  4. Python的那些坑--------括号篇

    在Python中遇见了带不带括号的问题,我目前的是这三种,有问题请指出.如果有其他的,我后续会更新 一  函数带不带括号: def a(x): return x print(a) #不带括号调用的结果 ...

  5. POJ-1511 Invitation Cards 往返最短路 邻接表 大量数据下的处理方法

    题目链接:https://cn.vjudge.net/problem/POJ-1511 题意 给出一个图 求从节点1到任意节点的往返路程和 思路 没有考虑稀疏图,上手给了一个Dijsktra(按紫书上 ...

  6. HDU 2196 Computer(经典树形DP)

    题意自己看(猜) 题解 这题很经典,就是记录dp[i][0/1/2]分别代表,从i点向下最大和次大深度,和向上最大深度. 然后转移就行了. 我的写法可能太丑了.死活调不出来,写了一个漂亮的 #incl ...

  7. linux在线添加硬盘、扫盘

    1:查看scsi 硬盘设备[root@web02 ~]# ls /sys/class/scsi_host host0 host1 host2 2:检查本机现有硬盘 [root@web02 ~]# fd ...

  8. parted 4T磁盘

    parted /dev/vdg mklabel gpt mkpart primary ext4 0% 100%

  9. 通过唯一ID实现简单的日志跟踪实现

    在实际项目中,通知我们需要记录一些日志,方便问题核查.但是日志多了就很容易混乱,请求,响应,执行中的日志无法对应,这时就需要为请求进行标记唯一ID来进行跟踪. /** * 记录请求日志 * * Cla ...

  10. [Javascript] Simplify Creating Immutable Data Trees With Immer

    Immer is a tiny library that makes it possible to work with immutable data in JavaScript in a much m ...