2011-12-28 63 views
2

在Android FileObserver中,当在观察文件夹中创建目录或在该文件夹中删除目录时,我会收到一些奇怪的事件编号,如(1073742080,1073742336)。Android FileObserver怪异事件

我得到这些事件编号一致的文件夹创建和删除。但是这些事件编号没有记录在Android的FileObserver类中。

有人可以解释为什么我只在文件夹创建时收到这个奇怪的事件,而不是在文件创建?有什么办法可以避免这个问题。

-Ron

回答

4

我发现MOVED_TO和MOVED_FROM事件有高阶位的事件标志开启。 MOVED_FROM是0x40000040,MOVED_TO是0x40000080。解决方法是使用事件代码简单地'和'ALL_EVENTS关闭高位,即“事件& = FileObserver.ALL_EVENTS”。

+0

很酷,它的作品! – Ron 2012-05-05 07:54:00

+0

只是一个想法,但我想知道高位是为了表示一个目录而不是一个文件。我现在没有时间做实验,但可能会稍微查看一下。如果你看到这种行为,也许你可以回报。 – mvsjes2 2012-05-05 16:38:07

+0

是的,它表示一个目录:http://rswiki.csie.org/lxr/http/source/include/linux/inotify.h?a=m68k#L45 – mvsjes2 2012-05-12 04:09:16

0

1073742080是表示用于IN_CREATE的代码: “文件或文件夹中的观看目录创建”。

似乎0x4xxx代码代表目录事件基于关闭的mvsjes2提供的inotify的标题上inotify.h的56行说: #define IN_ISDIR 0x40000000 /* event occurred against dir */

更多信息,已由谁已记录的其他用户提供代码从他的用例可以在这里找到: http://php.net/manual/en/function.inotify-read.php