如何解决FileObserver实例正在被垃圾回收
| 当文件打开(FileObserver.OPEN)时,我想监视一个文件夹中的所有文件,我想执行一个方法。问题是有时候,FileObserver实例是由GC收集的,我尝试过这样: final MyFileObserver fo = new MyFileObserver(\"/mnt/sdcard/Musicas\");
threadFileObserver = new Runnable() {
@Override
public void run() {
fo.startWatching();
}
};
t = new Thread(threadFileObserver);
t.run();
但是正在被收集。
问题是,对于不收集FileObserver实例的最佳解决方案是什么?
谢谢!
解决方法
我猜想startWatching()方法立即返回,您的线程完成运行,并且您的方法返回。此时,您的FileObserver是一个局部变量,在任何地方都看不到。您的线程已运行完毕,没有引用。两者都是垃圾收集。将FileObserver定义为静态变量或未垃圾回收的字段,而不是方法中的局部变量。
,通过使main1 making成为主/ UI活动的全局变量,将其保留在应用程序范围内。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。