Я пишу приложение для Android, которое делает много вещей. Недавно я провел рефакторинг своего кода, чтобы он имел лучшую структуру, но внезапно у меня возникла очень странная проблема.
handleRequest(String str)
{
boolean foo = executeCommand(str);
this.publishProgress("FOO1: " + foo);
if (foo == false);
{
this.publishProgress("FOO2: " + foo);
sendString("Failed to execute: " + str);
}
this.publishProgress("FOO3: " + foo);
sendEOM();
}
Приведенный выше код должен выполнить команду и сохранить «foo», если команда была выполнена правильно. Этот код находится внутри потока Android AsyncTask (), поэтому я использую «publishProgress», чтобы показать тост.
Я листал отладчиком и FOO верно! Тосты также показывают, что FOO верно на протяжении всего пути. Тем не менее, он переходит внутрь блока IF и выполняет его тоже. Я никогда не видел этого раньше, я думаю, что это проблема с Java. Я прошел через функцию «executeCommand», и похоже, что она тоже пропускает операторы возврата.
Я запустил код на виртуальном устройстве и на реальном, и они оба делают это.
Любые идеи? Я здесь в полной растерянности.