FileObserver真能监控文件变化?
2015-11-11 22:12
281 查看
答案:不一定管用。
下面是问题:
1,WeakReference导致FileObserver被释放掉。
android虚拟机演变gc对内存的处理更加激进。WeakReference甚至是SoftReference都很容易让FileObserver被回收。
2,线程不退出导致进程kill也无法退出.
FileObserver的jni层打开inotify获取到fd后,没有任何FileObserver也不会主动退出监听,这是因为jni层设计根本就没有考虑close fd;
最后安利我修改后的模块Fix_FileObserver
下面是问题:
1,WeakReference导致FileObserver被释放掉。
public void onEvent(int wfd, int mask, String path) { // look up our observer, fixing up the map if necessary... FileObserver observer = null; synchronized (m_observers) { WeakReference weak = m_observers.get(wfd); if (weak != null) { // can happen with lots of events from a dead wfd observer = (FileObserver) weak.get(); if (observer == null) { m_observers.remove(wfd); } } }
android虚拟机演变gc对内存的处理更加激进。WeakReference甚至是SoftReference都很容易让FileObserver被回收。
2,线程不退出导致进程kill也无法退出.
FileObserver的jni层打开inotify获取到fd后,没有任何FileObserver也不会主动退出监听,这是因为jni层设计根本就没有考虑close fd;
最后安利我修改后的模块Fix_FileObserver
相关文章推荐
- 第一节 Opencv3.0 mac下环境配置
- 25个国外优秀的餐饮网站设计作品欣赏
- Linux系统入门学习:在CentOS上安装phpMyAdmin
- Linux crontab命令
- 在Java中兼容Windows和Linux的路径处理
- 09 JobManager 高可用安装(HA)
- muduo库阅读(36)——Net部分:事件循环线程池EventLoopThreadPool
- nginx+tomcat集群高可用
- linux route命令的使用详解
- Linux下安装PHP
- linux——Shell的控制结构(附shell编写代码和运行结果)
- muduo库阅读(35)——Net部分:用于执行事件循环(EventLoop)的线程类EventLoopThread
- CentOS6.5 heartbeat高可用集群的详解及工作流程
- 遥感影像序列生成视频
- Top 和 LIMIT
- Linux终端bash美化教程
- VS2013+opencv2.4.11
- 学习Opencv的小心得
- 每天一个linux命令(53):route命令
- 适用于Ubuntu的最新版Nginx源整理