非同期タスクの実行方法に問題が発生しています。問題のコードは次のとおりです。
firstTask = new background().new FirstTask(context);
if (firstTask.execute().get().toString().equals("1")) {
secondTask = new background().new SecondTask(context);
}
ここで行っているのは、新しいasynctaskオブジェクトを作成し、それをfirstTaskに割り当ててから、実行することです。次に、最初の非同期タスクが完了したときに別の非同期タスクを起動し、成功値(この場合は1)が返されることを確認します。これはAndroid2.0以降で完全に機能します。ただし、Android 1.5でテストしていると、問題が発生し始めます。上記のコードは最初の非同期タスクを実行しますが、onPreExecute()が呼び出されているにもかかわらず、doInBackground()が呼び出されることはありません。get()メソッドを使用せずに最初のタスクを実行する場合は、doInBackground()が呼び出され、すべてが期待どおりに機能します。今を除いて、最初のタスクが正常に完了したかどうかを判断して、2番目のタスクに実行を指示する方法がありません。これはAndroid1.5のasynctaskのバグであると想定しても安全ですか?特にAPI以降(https://developer.android.com/reference/android/os/AsyncTask.html#get%28%29)は、getメソッドがAPI 3以降に実装されていることを示しています。これを修正する方法はありますか?または、最初のタスクが終了したことを確認する別の方法はありますか?