文档章节

android缓存数据 分析

班帅
 班帅
发布于 2014/03/11 09:41
字数 669
阅读 325
收藏 2

android缓存数据到本地放在哪儿最好?

之前一直不知道 sdcard/Android目录什么作用,我做的项目里面缓存数据到本地一般都是在sdcard上面建一个文件,然后把数据放在这个文件夹下面的子文件夹下。下面介绍一种更好的解决方法。

应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。

大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。

这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。

如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?

通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据

通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据


如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。

而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项

总结一下android 中的几种目录:

1、通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据

通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据


2、Context.getFilesDir()可以获取到"/data/data/<package name>/files" 这个方法获取的目录不是在sdcard上,而是在应用安装的目录


Context.getCacheDir可以获取到"/data/data/<package name>/cache" 这个方法获取的目录不是在sdcard上,而是在应用安装的目录,这个文件里面的数据在设备内存不足的时候,会被系统删除数据。注意:你不能依赖系统帮你删除这些文件,当这个文件夹里面的数据超过1MB的时候,系统会删除这个文件夹里面的数据。


© 著作权归作者所有

共有 人打赏支持
下一篇: webview使用
班帅
粉丝 5
博文 26
码字总数 14902
作品 0
浦东
技术主管
私信 提问
Android Application对象必须掌握的七点

1:Application是什么? Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指...

Carbenson
2015/09/25
0
1
Android 2019最新面试实战总结

Android: 今日头条屏幕适配的原理? 1:首先计算出 density,计算公式:当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位为 dp) = densitydensity 的意思就是 1 dp 占当前设备多少像素...

终端研发部
03/28
0
0
性能优化之Java(Android)代码优化

最新最准确内容建议直接访问原文:性能优化之Java(Android)代码优化 本文为Android性能优化的第三篇——Java(Android)代码优化。主要介绍Java代码中性能优化方式及网络优化,包括缓存、异步、...

Trinea
2013/08/26
2.5K
1
腾讯技术分享:Android版手机QQ的缓存监控与优化实践

本文内容整理自公众号腾讯Bugly,感谢原作者的分享。 1、问题背景 对于Android应用来说,内存向来是比较重要的性能指标。内存占用过高,会影响应用的流畅度,甚至引发OOM,非常影响用户体验。...

JackJiang2011
2018/04/08
0
0
Android异步下载图片并且缓存图片到本地

在Android开发中我们经常有这样的需求,从服务器上下载xml或者JSON类型的数据,其中包括一些图片资源,本demo模拟了这个需求,从网络上加载XML资源,其中包括图片,我们要做的解析XML里面的数...

liuher
2014/07/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Map的遍历方式

import java.util.*; public class a_21 { public static void main(String[] args) { Map<Integer,Integer> map= new HashMap<Integer, Integer>(); for(int i=0;i<6;i++) ......

南桥北木
30分钟前
0
0
总结:线程间频繁切换为什么耗费资源?

因为线程切换的时候,CPU需要将此线程的所有执行状态保存起来,如线程编号,执行到的位置等,然后再去执行其它线程。

浮躁的码农
今天
3
0
PHP版本高于5.5时,curl文件上传必须使用CurlFile对象

坑了我一天,之前@的方法各种上传不成功文件。都怀疑服务端有bug了。

叫我哀木涕
今天
1
0
js算法总结

数列求和 等差数列求和 function sum(a0,d,n){//a0->首项,d->公差,n->项数//(首项+末项)*项数/2return (a0+(a0+(n-1)*d))*n/2;} 等比数列求和 function sum(a0,q,n){//a0->首项,q......

祖达
今天
4
0
小白?转型?毕业生?外行学习快速入行大数据开发指南

这篇文章中,本文将针对三种不同的、想要进入数据科学领域的人群,给出自己的经验,帮助他们迅速有效入行。 虽然没有适合每个人的万能解决方案,但这三类建议值得想转行的你一看。 第1类:新...

董黎明
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部