我有一个作为递归文件服务器的类。它的作用是为父目录中的所有目录创建一个文件观察者,然后开始观察它们。我知道它有效,因为在调试模式下,它会记录logcat中的所有文件更改。但是当我从调试器断开连接并重新启动应用程序时,它会生成“启动”和“设置”日志,但它不会捕获任何文件更改。垃圾收集器是否可能正在清理,因为调试器不在线并且正在观看?我不认为这是真的,因为运行它的Intentservice永远不会死。
编辑:我将intentservice更改为nonstopintentservice,同样的事情仍在发生。所以服务不会被破坏。
您怎么看?
由于
答案 0 :(得分:0)
事实证明,即使调试器将目标服务列为仍然活着,但实际上并非如此,文件观察者正在最终确定。所以我写了一个线程来欺骗垃圾收集器让对象存在。
答案 1 :(得分:0)
我尝试过服务和另一个线程。但都没有效果。我认为问题是FileObserver被垃圾收集。
警告:如果FileObserver被垃圾收集,它将停止发送事件。为确保您继续接收事件,您必须保留对其他实时对象
的FileObserver实例的引用http://developer.android.com/reference/android/os/FileObserver.html