博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android监听SD卡文件变化
阅读量:7098 次
发布时间:2019-06-28

本文共 910 字,大约阅读时间需要 3 分钟。

hot3.png

今天再一次使用到FileObserver,上一次使用还是很久之前了。总结一下FileObserver里留的一些“坑”

1、FileObserver只能监听一个目录下的“一级”子文件,也就是说FileObserver不支持监测一个目录下嵌套子目录的文件;

2、关于FileObserver中的onEvent(int event, String path)函数。其中event在使用过程中发现总是一个很大的数,这与api中定义的1,2,4...512常量不相符。需要将event & FileObserver.ALL_EVENTS,才能得到sdk中定义的常量。究其原因,貌似event中的高位附带了一些信息;

3、经过试验发现如果监听的目录被删除了,FileObserver就没有作用了。即使后来再创建一个同样的目录。我要的效果是监听一个目录下的文件,如果这个文件被删除了就重新生成一个该文件,在调试中发现第一次删除整个目录后能重新生成,但是之后再删除就不起作用了(删除单个文件应该没有问题)。应该就是提到的这个原因。有一个解决方法就是通过handler方式,异步线程重新生成了文件后通知service,再重启对该目录的监测即可。

4、可以指定要针对文件的哪些操作动作进行监听:比如

static final int mask = (FileObserver.CREATE |     			FileObserver.DELETE |     			FileObserver.DELETE_SELF |    			FileObserver.MODIFY |    			FileObserver.MOVED_FROM |    			FileObserver.MOVED_TO |    			FileObserver.MOVE_SELF);     	    	public PathFileObserver(String root){    		super(root, mask);    		... ...    	}

转载于:https://my.oschina.net/kingguary/blog/143182

你可能感兴趣的文章
世界500强某知名日企面试题库
查看>>
MySQL MyISAM 库转换为InnoDB的方法
查看>>
使用Python读Excel数据Insert到MySQL
查看>>
linux chkconfig and umask
查看>>
公司那些事-薪酬
查看>>
我的友情链接
查看>>
引用类型和值类型的比较
查看>>
Oracle查询被锁的表及进程的方法
查看>>
linux学习笔记四(shell编程一)
查看>>
树莓派2+无线网卡==伪热点+钓鱼网站
查看>>
js中的隐式转换
查看>>
如何用 k8s 管理超过 2500 个节点的集群
查看>>
HDU1087 Super Jumping! Jumping! Jumping!
查看>>
RHEL6基础五十之VMware下Linux系统安装VMware Tools
查看>>
在Linux中安装Oracle(安装总结)
查看>>
java 面试基础题 引用
查看>>
C#中yield用法
查看>>
常用的Linux操作
查看>>
风电场向管理要效益
查看>>
进程监控及管理常用命令
查看>>