Android 存储区划分

概述

虽说做Android两年了,可是对于一些基础的知识还是不甚了解。比如说Android的内存(Memory)、手机存储内部存储(InternalStorage)和外部存储(ExternalStorage)。今天我们就来说一说存储的事!

问题

开始之前,先说说我们常遇到的存储问题!

1. 什么是内存、手机存储、内部存储,外部存储?
2. 内部存储和外部存储的区别是什么?
3. 应用数据在内部和外部存储是怎么保存的?
4. 手机的“设置”—>“应用管理”中的“删除数据”和“清空缓存”是什么意思?

分析

内存、手机存储、内部存储和外部存储的概念

内存(RAM):也叫运行内存,决定了设备的运行速度。应用与cpu进行沟通的媒介,主要负责运行程序和保存程序运行过程中产生的临时数据,断电后会清空。

手机存储(ROM):机身存储,即设备内嵌存储器容量大小。保存用户所有信息。

内部存储(第一层含义):内置存储器存储 - 系统所占存储;手机“设置”—>”存储”—>”内部存储”即是指这种,早期的Android设备的内部存储指的就是这种。

内部存储(第二层含义):内置存储器存储 - 系统所占存储 - 内置存储器外部存储,开发常说的内部存储指的就是这种。

外部存储:包括内置存储器外部存储和SD卡或USB存储等外嵌存储。

历史回顾

在早期的时候,Android设备的内部存储是指嵌在设备内部的存储器存储(即手机存储 - 系统所占存储)外部的SD卡或USB存储设备就是外部存储(即SD卡存储+USB存储)
但是后来随着技术的发展,内嵌存储器容量也越来也大,一些中高端设备就将设备内嵌的存储器划分为“内部”和“外部”存储。也就是说:
内部存储 = 机身存储 - 系统所占存储 -内置存储器外部存储
外部存储 = 内置存储器外部存储(primary external storage) + SD/USB存储 (secondary external storage)

这也是我们目前开发中所说的内部和外部存储的概念。

存储结构图

这里写图片描述

内部和外部存储的差异

内部存储针对不同版本的Android系统来说,位置都是固定的,即/data/data/包名,可通过Environment.getDataDirectory()获取。外部存储根据api及厂家默认的位置的不同,路径也有所不同。api大于18(Android4.3)的内置外部存储是/storage/emulated/0,外置外部存储的位置是/storage/sdcard1。对于api小于18的,内置外部存储路径是/mnt/sdcard;外置外部路径笔者没有获取到,哪位朋友知道的话可以告诉小弟一声。外部存储可分为公共区和私有区,公共区就是所有应用都可访问,一般保存一些图片,视频,音频之类的,系统每天也能扫描到。私有区就是专属应用自身的,因为私有区本身也属于外部存储,其他应用也能访问到,不过该目录下一般保存应用特有数据,其他应用获取意义不大。

相关函数说明

函数路径意义
Environment.getRootDirectory()/system系统目录
Environment.getDataDirectory()/data用户数据目录
Context.getPackageCodePath()/data/app/com.everyoo.functionmodule-1.apk应用包代码路径
Context.getPackageResourcePath()/data/app/com.everyoo.functionmodule-1.apk应用包资源路径
Environment.getExternalStorageState()mounted外部存储的状态
Environment.getExternalStorageDirectory()/mnt/sdcard或/storage/sdcard0外部存储目录
Environment.getExternalStoragePublicDirectory(int type)/mnt/sdcard/Picuture(根据type而定)外部存储公共区目录
Context.getExternalFilesDir(int type)/mnt/sdcard/Android/data/com.everyoo.functionmodule/files/Pictures外部存储私有区目录
Context.getFilesDir()/data/data/com.everyoo.functionmodule/files内部存储之文件
Context.getCacheDir()/data/data/com.everyoo.functionmodule/cache内部存储之缓存

参考资料

彻底理解android中的内部存储与外部存储 http://www.androidchina.net/4106.html
保存文件https://developer.android.com/training/basics/data-storage/files.html?hl=zh-cn

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值