public abstract class FileObserver
extends Object
java.lang.Object | |
↳ | android.os.FileObserver |
监视文件(使用inotify )在文件被设备上的任何进程(包括本文)访问或更改后触发事件。 FileObserver是一个抽象类; 子类必须实现事件处理程序onEvent(int, String)
。
每个FileObserver实例都监视单个文件或目录。 如果监视目录,则会针对受监视目录内的所有文件和子目录触发事件。
事件掩码用于指定要报告哪些更改或动作。 事件类型常量用于描述事件掩码中的可能更改以及事件回调中实际发生的事件。
警告 :如果FileObserver被垃圾收集,它将停止发送事件。 为确保您继续接收事件,您必须保留对某个其他活动对象的FileObserver实例的引用。
Constants |
|
---|---|
int |
ACCESS 事件类型:数据是从文件中读取的 |
int |
ALL_EVENTS 事件掩码:合并的所有有效事件类型 |
int |
ATTRIB 事件类型:元数据(权限,所有者,时间戳)已明确更改 |
int |
CLOSE_NOWRITE 事件类型:有人让文件或目录以只读方式打开,并关闭它 |
int |
CLOSE_WRITE 事件类型:有人打开文件或目录进行写入,然后关闭它 |
int |
CREATE 事件类型:在受监视的目录下创建新文件或子目录 |
int |
DELETE 事件类型:文件已从受监视的目录中删除 |
int |
DELETE_SELF 事件类型:被监控的文件或目录已被删除; 监控有效停止 |
int |
MODIFY 事件类型:数据被写入文件 |
int |
MOVED_FROM 事件类型:文件或子目录已从受监视的目录中移出 |
int |
MOVED_TO 事件类型:文件或子目录已移至受监视的目录 |
int |
MOVE_SELF 事件类型:被监控的文件或目录已被移动; 监控继续 |
int |
OPEN 事件类型:打开文件或目录 |
Public constructors |
|
---|---|
FileObserver(String path) 等同于FileObserver(路径,FileObserver.ALL_EVENTS)。 |
|
FileObserver(String path, int mask) 为某个文件或目录创建一个新的文件观察器。 |
Public methods |
|
---|---|
abstract void |
onEvent(int event, String path) 事件处理程序必须由子类实现。 |
void |
startWatching() 开始观看事件。 |
void |
stopWatching() 停止观看事件。 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
FileObserver (String path)
等同于FileObserver(路径,FileObserver.ALL_EVENTS)。
Parameters | |
---|---|
path |
String
|
FileObserver (String path, int mask)
为某个文件或目录创建一个新的文件观察器。 监控不会从创建开始! 您必须先致电startWatching()
然后才能收到活动。
Parameters | |
---|---|
path |
String : The file or directory to monitor |
mask |
int : The event or events (added together) to watch for |
void onEvent (int event, String path)
事件处理程序必须由子类实现。
此方法在特殊的FileObserver线程上调用。 它独立于任何线程运行,因此请注意使用适当的同步! 考虑使用post(Runnable)
将事件处理工作转移到主线程以避免并发问题。
事件处理程序不得抛出异常。
Parameters | |
---|---|
event |
int : The type of event which happened |
path |
String : The path, relative to the main monitored file or directory, of the file or directory which triggered the event |
void startWatching ()
开始观看事件。 受监视的文件或目录此时必须存在,否则不会报告事件(即使稍后显示)。 如果监控已经开始,此调用不起作用。
void stopWatching ()
停止观看事件。 某些事件可能正在进行中,因此即使此方法完成后,事件仍可能会继续进行报告。 如果监视已经停止,则此呼叫不起作用。
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize
方法以处置系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 该finalize
方法可以采取任何行动,包括再制作该对象提供给其他线程; 但是, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类Object
的finalize
方法Object
执行特殊操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定的对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在针对某个对象调用 finalize
方法之后,在Java虚拟机再次确定不再有任何方法可以通过尚未死亡的任何线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定的对象,Java虚拟机永远不会多次调用 finalize
方法。
finalize
方法引发的任何异常 finalize
导致终止此对象的终止,但会被忽略。