私は多くのことを行うアンドロイドアプリを書いています。最近、より良い構造になるようにコードをリファクタリングしましたが、突然、非常に奇妙な問題が発生しました。
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 は true です。トーストは、FOO が全体を通して真であることも示しています。ただし、先に進んで IF ブロック内にジャンプし、それも実行します。これは今まで見たことがありません。Java の問題だと思います。関数「executeCommand」をステップ実行していましたが、return ステートメントもスキップしているようです。
仮想デバイスと実際のデバイスでコードを実行しましたが、どちらもこれを行います。
何か案は?私はここで完全に途方に暮れています。