gpt4 book ai didi

android - 监视 Android 服务中的文件夹

转载 作者:行者123 更新时间:2023-11-29 02:39:42 25 4
gpt4 key购买 nike

我有一个 Android 应用程序,我想监控一个文件夹。我做了一个服务(我想不停地监视文件夹,即使用户杀死了应用程序),我把文件夹的路径放在 Intent 的附加部分。在服务中,我有一个 FileObserver,它应该监视我的文件夹并在文件夹内创建文件时触发事件。问题是事件永远不会被触发。难道我做错了什么?谢谢!

@Override
public int onStartCommand(Intent intent, int flags, int startId){

String mainFolder = intent.getStringExtra("mainFolder");

Toast.makeText(getApplicationContext(), "Service start! Main folder is: " + mainFolder, Toast.LENGTH_LONG).show();

FileObserver observer = new FileObserver(mainFolder) {
@Override
public void onEvent(int event, String path) {
if (path == null) {
return;
}
if (FileObserver.CREATE == event) {
Toast.makeText(getApplicationContext(), "This file was creted: " + path, Toast.LENGTH_LONG).show();

}
}
};

observer.startWatching();

return START_REDELIVER_INTENT;
}

最佳答案

引用 the documentation for FileObserver :

Warning: If a FileObserver is garbage collected, it will stop sending events. To ensure you keep receiving events, you must keep a reference to the FileObserver instance from some other live object.

一旦 onStartCommand() 返回,您的 FileObserver 实例就有资格进行垃圾回收,因为您没有将它保存在一个字段中,而是保存在一个局部变量中。

另外,请记住服务不会永远运行。

关于android - 监视 Android 服务中的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45057142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com