1
我有一個Android應用程序,我想監視一個文件夾。我提供了一項服務(即使用戶殺死應用程序,我也要不停地監視文件夾),並將文件夾的路徑放在Intent的附加內容中。在服務中,我有一個FileObserver應該監視我的文件夾,並在文件夾內創建文件時觸發事件。問題是事件從未被觸發。 我做錯了什麼?謝謝!監控Android服務中的文件夾
@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;
}
謝謝你的回答!我知道一個服務不會永遠運行,但是「return START_REDELIVER_INTENT;」聲明應該重新打開該服務。 –
@AlexHash:是的,但由於您的服務不是前臺服務,所以在Android 8.0+上,它會運行一分鐘左右,然後停止。 – CommonsWare