`
轻指飞扬
  • 浏览: 32734 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Android读SD卡信息绕过缓存

阅读更多
记录一下前些天在编程中解决的一个问题,而这个问题只会发生在程序打包成APK后运行时,而在虚拟机上调试或直接取项目bin目录下的apk运行一切正常。

问题:
我写的一个应用,会在程序开始运行时,读取SD中的一个XML文件,界面上会显示这个XML中的相应内容。在界面中有个按钮用来更新这个XML文件中的内容,更新好XML之后程序会重新读取该XML文件。此时就悲剧了,程序读取的那个XML文件,竟然是没被修改前的那个,而看SD卡中XML文件却成功更新了。

分析:
一时搞不明白到底怎么会这样,后面仔细想了想,可能是android的一种缓存机制吧。猜测android是把第一次读SD卡中的XML文件写入到RAM中了,下一次在SD卡中读相同路径文件名的文件,系统直接是把RAM中那个文件读出来,这样来减少系统开支。

尝试了几种解决办法:
1:在程序更新XML成功后马上清理一下内存(试了一些内存清理应用如360内存清理,任务杀手,可以解决该问题),像试图模仿这些应用的清理内存功能,未模仿成
2:在程序更新XML成功后程序控制卸载SD卡,随后马上在装载SD卡,测试通过。就是这个方法是在是太流氓
3:在程序更新XML文件内容时,顺便把XML文件名都顺带更新,文件名以文件的MD5码来定,保存该文件名用作以后读取


最终选择了第3种处理方法,运行至今没有在出现异常~
分享到:
评论

相关推荐

    android通过反射获取内置存储、SD、OTG盘的路径,适合三方apk存储查看与文件管理

    总之,通过反射机制,开发者可以在不依赖特定厂商实现的情况下,获取并管理Android设备上的各种存储路径,包括内置存储、SD卡和OTG设备,同时获取到它们的空间信息,以适应不同的设备环境。在`MountRootManagerRf....

    android direct IO.rar

    在Android系统中,直接I/O(Direct IO)是一种优化数据传输效率的技术,它允许应用程序绕过操作系统的缓冲区,直接与磁盘设备进行交互。这种技术对于需要高性能、低延迟的场景,如数据库、文件系统或者媒体处理等,...

    android动态加载jar文件中的图片

    因此,我们需要将jar文件放在外部存储(如SD卡)或者应用私有的`assets`或`raw`目录中。如果是外部存储,可以通过`FileInputStream`打开;如果是`assets`或`raw`,则可以使用`AssetManager`读取。加载jar后,需要将...

    Android4.4下MediaProvider无法向外置SD卡中文件写数据的解决方法

    总之,解决Android 4.4下MediaProvider无法写入外置SD卡的问题,关键在于请求必要的权限,以及使用适合的API来绕过系统级别的权限限制。同时,保持对最新Android API的了解,以便在不同版本的系统上实现兼容性。

    android调用照相机

    这样可以绕过系统的自动压缩处理。 ```java Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 指定图片保存路径 File file = new File(Environment.getExternalStorageDirectory(), "your_...

    世界著名的xda论坛的android黑客手册

    涵盖了关于Android手机的高级定制和黑客技术,包括Root(获取超级用户权限)、ROM(操作系统固件)、定制主题等,还有如何绕过OEM(原始设备制造商)厂商对手机的限制和保护措施,解锁Android设备,并附有丰富的实例...

    EVO 3D 改卡软件及recovery

    EVO 3D的改卡软件可能包括对内建SD卡进行分区、格式化或者修改存储卡的文件系统类型,如将FAT32转换为EXT4,以提升读写速度或支持更大的文件。在使用改卡软件前,用户必须了解操作风险,并确保备份所有重要数据,...

    Android4.4新增函数访问外部存储

    在Android 4.4 KitKat版本中,针对外部存储的访问策略发生了显著变化,主要针对外置存储卡(SD卡)的使用进行了调整。在这一版本之前,应用通常需要`WRITE_EXTERNAL_STORAGE`权限来写入外部存储,但在4.4之后,这个...

    DroidKit_v1.0.0.20210528.rar

     无论您是误删文件还是彻底格式化SD卡,DroidKit始终可以轻松恢复丢失的照片、视频和其他文件。  6、立即让您的死机恢复生机  DroidKit不仅可以拯救您的数据,还可以拯救您无法访问的设备,无论它是崩溃还是...

    Android模拟器参数 emulator启动设置

    - **应用场景**:当需要使用自定义SD卡镜像时。 13. **`-wipe-data`** - **功能**:清除并重置用户数据镜像,从`initdata`拷贝。 - **应用场景**:当需要重置模拟器状态时非常有用。 14. **`-avd<name>`** - *...

    andoroid 5.1root系统

    Rooting Android设备的过程涉及到修改或绕过内置的安全机制,以获取对设备的全部访问权限。在Android 5.1中,这通常通过利用系统漏洞来实现。一旦设备被root,用户可以安装SuperSU或其他类似的管理工具,以控制哪些...

    清除锁屏密码

    本文将详细介绍如何在忘记锁屏密码时,通过进入恢复模式(Recovery Mode)进行卡刷操作,而无需执行双清(即清除数据和缓存分区)。 首先,我们需要理解什么是恢复模式。恢复模式是Android系统内嵌的一种功能,它...

    oppo x9007无验证版 RECOVERY

    OPPO X9007是OPPO公司推出的一款智能手机,配备了5.5英寸的全高清显示屏,搭载了高通骁龙615处理器,拥有2GB运行内存和16GB存储空间,支持microSD卡扩展,运行基于Android的操作系统。这款手机的无验证版RECOVERY...

    LearnSSL:在这个项目中,我将学习 SSL 加密

    5. **Android开发中的SSL**:在Android应用开发中,使用HTTPS连接可能需要配置信任自签名的证书或绕过默认的证书检查,这通常通过重写`TrustManager`实现。此外,由于Android系统的版本差异,需要关注不同版本对SSL/...

Global site tag (gtag.js) - Google Analytics