長い間検索した後、次のリンクをたどって理解しました、
http://developer.android.com/reference/android/os/AsyncTask.html#cancel(ブール値)
AsyncTask は onPostExecute を実行しません
しかし、私はサーバーにいくつかの API ヒットを実行したいと考えており、すべてのデータを取得した後、スプラッシュスクリーンからメインアクティビティに移動したいと考えています。以下は私のコードです。. . .
class Startsyntask extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... arg0)
{
raw_data = new File(Environment.getExternalStorageDirectory() + "/.MyFoldernew");
if(raw_data.exists())
{
Log.e("directory exists", " already ");
new read_syntask().execute();
}
else
{
Log.e("directory created", " newly ");
raw_data.mkdirs();
new write_syntask().execute();
}
return null;
}
@Override
protected void onPostExecute(Void unused)
{
if( i == 6)
{
finish();
startActivity(new Intent("com.sample.app.Tabbar"));
}
}
}
コード内のread_synctask
とwrite_synctask
は、いくつかの特定の操作を行う別の非同期タスクです。これらの非同期タスクでは、 doinBackground の後に onPostexecute を呼び出しています。
実際には Tabbar Activity に移動し、API ヒットが続き、Tabbar activity でサーバーからデータを読み取っています。doinBackground で非同期タスクを完了した後にのみ、onProgress を呼び出す必要があります。