Android监听SD卡文件变化

来源:互联网 发布:java的日志框架 编辑:程序博客网 时间:2024/04/30 08:27

今天再一次使用到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、可以指定要针对文件的哪些操作动作进行监听:比如

?
1
2
3
4
5
6
7
8
9
10
11
12
13
staticfinal int mask = (FileObserver.CREATE |
                FileObserver.DELETE |
                FileObserver.DELETE_SELF |
                FileObserver.MODIFY |
                FileObserver.MOVED_FROM |
                FileObserver.MOVED_TO |
                FileObserver.MOVE_SELF);
         
        publicPathFileObserver(String root){
            super(root, mask);
 
            ... ...
        }
0 0
原创粉丝点击