|
/data Environment.getDataDirectory().getAbsolutePath()
|
主要目录
-
/data/app
用于包含许多 apk 的文件列表 -
/data/cache
用于保存临时缓存或者下载的文件 -
/data/data
用于存储 app 的数据 -
/data/data/{packageName}
以包名形式区分,为app的私有存储空间,app卸载之后会删除该包下的文件 -
/database
用于存储数据库文件 -
/shared_prefs
用于存储 shared 文件 -
/lib
用于存储 so 库 -
/code_cache
优化过的代码缓存 -
…
-
/cache
缓存空间, context.getCacheDir() 获取 -
/files
数据存储空间,contet.getFilesDir() 获取
一般的,一个应用的内部存储路径未 /data/data/{packageName}/
。但是对于特殊机型比如华为,小米可能为 /data/user/0/{packageName}/
|
1 2 3 4 5
|
/data/data/{packageName}/files/ context.getFilesDir().getAbsolutePath(); /data/data/{packageName}/cache/ context.getCacheDir().getAbsolutePath();
|
storage 分区(External Storage/Shared Storage)
External Storage/Shared Storage,不需要 root 权限就可以操作。可能包含可移除的存储介质,在使用之前需要判断是否挂载(mounted)
对于 4.4 以前的手机,设备存储很小,存在一个内置的存储空间,这部分空间就是内部存储。另外,还支持一个可以移除的存储介质,就是外部存储,比如 SD 卡。随着硬件升级,大部分大于 Android 4.4 的设备内置的存储空间可以划分为 “内部存储” 和 “外部存储”。同时,若此时还支持插入 SD 卡,则外部存储空间等于 “外部存储” 和 “SD卡存储” 之和。
查看方式
|
1 2 3
|
/storage/emulated/0 @Deprecated Android10 版本上不再推荐使用该 Api Environment.getExternalStorageDirectory()
|
主要目录
storage/emulated/0/Android/
media/{packageName}
,以包名的形式区分,app的私有多媒体空间,5.0 Api可用obb/{packageName}
,以包名的形式区分,游戏 obb 数据文件data/{packageName}
以包名的形式区分,app的私有存储空间/cache
缓存空间,可通过context.getExternalCacheDir()
获取/files
数据存储空间,可通过context.getExternalFilesDir()
获取, Android 10 通过以下方法进一步操作/Music
, 通过context.getExternalFilesDirs(Environment.DIRECTORY_MUSIC)
获取/Podcasts
, 通过context.getExternalFilesDirs(Environment.DIRECTORY_PODCASTS)
获取/Ringtones
, 通过context.getExternalFilesDirs(Environment.DIRECTORY_RINGTONES)
获取/Alarms
, 通过context.getExternalFilesDirs(Environment.DIRECTORY_ALARMS)
获取/Notifications
, 通过context.getExternalFilesDirs(Environment.DIRECTORY_NOTIFICATIONS)
获取/Pictures
, 通过context.getExternalFilesDirs(Environment.DIRECTORY_PICTURES)
获取/Movies
, 通过context.getExternalFilesDirs(Environment.DIRECTORY_MOVIES)
获取media
,obb
,data
Android10及以上 按包名为应用划分 沙盒目录,跟随 app 卸载而删除,外部无法访问storage/emulated/0/Music/
Android 10及以上 无法通过路径访问,SAF,MediaStore 可行storage/emulated/0/Pictures/
访问同上storage/emulated/0/Ringtones/
访问同上storage/emulated/0/Alarms/
访问同上storage/emulated/0/Notifications/
访问同上storage/emulated/0/Podcasts/
访问同上storage/emulated/0/Movies/
访问同上storage/emulated/0/Download/
访问同上storage/emulated/0/DCIM/
访问同上storage/emulated/0/Documents/
访问同上storage/emulated/0/Screenshots/
访问同上storage/emulated/0/Audiobooks/
访问同上
Android 逻辑角度看
-
App-specific storage
-
存储类型:应用专用存储,私有目录
-
使用方法:
getFilesDir()
,getCacheDir()
,getExternalFilesDir()
,getExternalCacheDir()
,getExternalMediaDirs()
-
操作权限:内部存储不需要权限,外部存储从 Android4.4 之后也不需要
-
外部应用访问:无法访问内部存储,Android 10及以后无法外部存储
-
卸载是否移除:移除
-
Preferences
-
存储类型:内部私有存储,键值对存在
-
使用方法:Jetpack Preferences library
-
操作权限:不需要
-
外部应用访问:不可以访问
-
卸载是否移除:移除
-
Databases
-
存储类型:内部私有存储,持久化结构
-
使用方法:Room persistence library
-
操作权限:不需要
-
外部应用访问:不可以访问
-
卸载是否移除:移除
-
Shared storage - Media
-
存储类型:共享存储,比如一些图片,视音频
-
使用方法:MediaStore API
-
操作权限:Android9或者更低版本都需要
READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
。Android10或更高版本在访问外部app才需要 -
外部应用访问:可以访问,但是需要
READ_EXTERNAL_STORAGE
权限 -
卸载是否移除:不移除
-
Shared storage - Documents、files
-
存储类型:共享存储,比如文档,文件
-
使用方法:Storage Access Framework
-
操作权限:不需要
-
外部应用访问:可以访问,文件选择器可以扫描到
-
卸载是否移除:不移除
一些重要的建议
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
尾声
以薪资待遇为基础,以发展为最终目标,要在高薪资的地方,谋求最好的发展!
下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。
.(img-iQcXuxNv-1711633222236)]
尾声
以薪资待遇为基础,以发展为最终目标,要在高薪资的地方,谋求最好的发展!
下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。
[外链图片转存中…(img-wqih9jYv-1711633222236)]