Вот мой FileObserver код:Дубликат зацикливание
private void updatecheck() {
// Email sync loop
mHandler.post(new Runnable() {
@Override
public void run() {
if (Looper.myLooper() == null) {
Looper.prepare();
}
FileObserver observerGAD7 = new FileObserver(String.valueOf(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + "/GAD7_Client_Responses.db"))) {
@Override
public void onEvent(int event, String path) {
if ((FileObserver.MODIFY & event)!=0) {
System.out.println("GAD7 file event");
//TODO EMAIL GAD7 DATABASE AUTOMATICALLY
}
}
};
observerGAD7.startWatching();
FileObserver observerPHQ9 = new FileObserver(String.valueOf(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + "/PHQ9_Client_Responses.db"))) {
@Override
public void onEvent(int event, String path) {
if ((FileObserver.MODIFY & event)!=0) {
System.out.println("PHQ9 file event");
//TODO EMAIL PHQ9 DATABASE AUTOMATICALLY
}
// Looper.myLooper().quit();
}
};
observerPHQ9.startWatching();
Looper.loop();
}
});
}
Он возвращается 2 отчетов для входа, а не только один. Это означало бы, что будет отправлено 2 автоматических сообщения электронной почты, которые не были бы идеальными.
Может ли кто-нибудь помочь мне с моим синтаксисом?
Какое сообщение печатается дважды? – W0rmH0le
Этот код сильно сломан. Он будет висеть Looper, связанный с myHandler, пока Looper не появится в Runnable-выходах. Я не уверен, что вы пытаетесь сделать, но это не имеет смысла. –
В настоящее время код должен постоянно проверять два файла. Если они были изменены, копия автоматически отправляется по электронной почте Однако в настоящее время код просто записывает комментарий в системный журнал. Он должен писать только один раз, а не дважды. – NormalUser