android+文件监控,Android文件监控FileObserver介绍



在前面的Linux文件系统Inotify机制中介绍了Linux对文件变更监控过程。Android系统在此基础上封装了一个FileObserver类来方便使用Inotify机制。FileObserver是一个抽象类,需要定义子类实现该类的onEvent抽象方法,当被监控的文件或者目录发生变更事件时,将回调FileObserver的onEvent()函数来处理文件或目录的变更事件。

事件监控过程

在FileObserver类中定义了一个静态内部类ObserverThread,该线程类才是真正实现文件或目录监控过程。各种类型的FileObserver都拥有一个ObserverThread实例:

frameworks\base\core\Java\android\os\FileObserver.java

publicabstractclassFileObserver {

//可监控的事件类型

publicstaticfinalintALL_EVENTS = ACCESS | MODIFY | ATTRIB | CLOSE_WRITE

| CLOSE_NOWRITE | OPEN | MOVED_FROM | MOVED_TO | DELETE | CREATE | DELETE_SELF | MOVE_SELF;

//静态创建并启动一个文件监控线程

privatestaticObserverThread s_observerThread;

static{

s_observerThread = newObserverThread();

s_observerThread.start();

}

// instance

privateString m_path;

privateInteger m_descriptor;

privateintm_mask;

}

FileObserver类通过静态方式构造了一个ObserverThread对象:

publicObserverThread() {

super("FileObserver");

m_fd = init();//初始化一个inotify实例,Observer线程就是对该inotify实例进行监控

}

frameworks\base\core\jni\android_util_FileObserver.cpp

staticjint android_os_fileobserver_init(JNIEnv* env, jobject object)

{

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值