File Observer在调试模式下工作,但没有调试器就不会触发事件

时间:2012-06-30 22:04:56

标签: android debugging fileobserver

我有一个作为递归文件服务器的类。它的作用是为父目录中的所有目录创建一个文件观察者,然后开始观察它们。我知道它有效,因为在调试模式下,它会记录logcat中的所有文件更改。但是当我从调试器断开连接并重新启动应用程序时,它会生成“启动”和“设置”日志,但它不会捕获任何文件更改。垃圾收集器是否可能正在清理,因为调试器不在线并且正在观看?我不认为这是真的,因为运行它的Intentservice永远不会死。

编辑:我将intentservice更改为nonstopintentservice,同样的事情仍在发生。所以服务不会被破坏。

您怎么看?

由于

2 个答案:

答案 0 :(得分:0)

事实证明,即使调试器将目标服务列为仍然活着,但实际上并非如此,文件观察者正在最终确定。所以我写了一个线程来欺骗垃圾收集器让对象存在。

答案 1 :(得分:0)

我尝试过服务和另一个线程。但都没有效果。我认为问题是FileObserver被垃圾收集。

警告:如果FileObserver被垃圾收集,它将停止发送事件。为确保您继续接收事件,您必须保留对其他实时对象

的FileObserver实例的引用

http://developer.android.com/reference/android/os/FileObserver.html