Java でマルチタスクがどのように機能するかを理解するのに苦労しています。ここでSOに関するいくつかの記事を読みましたが、まだ問題があります。
AsyncTask を実行するメイン クラスがあり、AsyncTask が完了するまでメイン クラスのコード実行を停止したいと考えています。AsyncTask では、インターネットからデータを収集します。データを収集して結果を取得し、onPostExecute() メソッドで通知したいと考えています。簡略化されたコードは次のとおりです。
public class MainClass extends Activity {
public class MyTask extends AsyncTask<String, Void, String>
{
@Override
protected String doInBackground(String... arg0) {
//(...Some calcuations here)
synchronized (self) {
self.notify();
}
return result;
}
@Override
protected void onPostExecute(String result) {
textView.setText(result);
//I would like to notify here, but it is not working
}
}
private void callAsyncTask()
{
myTask = (MyTask) new MyTask().execute(someString, someOtherString);
synchronized (self)
{
try
{
self.wait();
} catch (InterruptedException e) { e.printStackTrace(); }
}
}
//(...)Some code where I callAsyncTask()
}
wait() と notify() の使用に関する私の理解は正しいですか? これらの方法を使用する際に注意すべきことを誰かが説明してもらえますか?