Android监听SD卡文件变化
生活随笔
收集整理的這篇文章主要介紹了
Android监听SD卡文件变化
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
今天再一次使用到FileObserver,上一次使用還是很久之前了。總結(jié)一下FileObserver里留的一些“坑”
1、FileObserver只能監(jiān)聽一個目錄下的“一級”子文件,也就是說FileObserver不支持監(jiān)測一個目錄下嵌套子目錄的文件; 2、關(guān)于FileObserver中的onEvent(int event, String path)函數(shù)。其中event在使用過程中發(fā)現(xiàn)總是一個很大的數(shù),這與api中定義的1,2,4...512常量不相符。需要將event & FileObserver.ALL_EVENTS,才能得到sdk中定義的常量。究其原因,貌似event中的高位附帶了一些信息; 3、經(jīng)過試驗發(fā)現(xiàn)如果監(jiān)聽的目錄被刪除了,FileObserver就沒有作用了。即使后來再創(chuàng)建一個同樣的目錄。我要的效果是監(jiān)聽一個目錄下的文件,如果這個文件被刪除了就重新生成一個該文件,在調(diào)試中發(fā)現(xiàn)第一次刪除整個目錄后能重新生成,但是之后再刪除就不起作用了(刪除單個文件應(yīng)該沒有問題)。應(yīng)該就是提到的這個原因。有一個解決方法就是通過handler方式,異步線程重新生成了文件后通知service,再重啟對該目錄的監(jiān)測即可。 4、可以指定要針對文件的哪些操作動作進(jìn)行監(jiān)聽:比如 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); ... ... }總結(jié)
以上是生活随笔為你收集整理的Android监听SD卡文件变化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apple Swift编程语言入门教程
- 下一篇: 读写锁ReadWriteLock