1

1 つのアクティビティから開始する AsyncTask があります。一部のデータを sqlite データベースに保存します。これには数秒かかる場合があります。onPreExecute() 内に標準の進行状況バーを設定し、onPostExecute() 内でそれを閉じて、doInBackground(Void... arg0) でいくつかの作業を行いました。

タスクが完了したら、アクティビティに戻ってfinish()するために必要なもの。問題は、AsyncTask が完了するのを待つ方法がわからないことです。ステータスを確認できますが、それは役に立ちません。

    public class UpdateAsyncTask extends AsyncTask<Void, Void, Boolean> {

    @Override
    protected void onPreExecute() {
            progress = new ProgressDialog(context);
            progress.setMessage("Loading ...");
            progress.show();
    }

    @Override
    protected Boolean doInBackground(Void... arg0) {
          // Do work
         return true;

    }

    protected void onPostExecute() {
             progress.dismiss();

          }
}

メイン アクティビティが完了したら、finish() を呼び出すにはどうすればよいですか。御時間ありがとうございます

UPDATE によってタスクを実行します

UpdateAsyncTask task = new UpdateAsyncTask(context);

                task.setCallbackActivity(this);

                task.execute();

UPDATE 2 aynctask は、再利用したいので別のタスクです

4

4 に答える 4

1

このようなものはうまくいくはずです...

public class UpdateAsyncTask extends AsyncTask<Void, Void, Boolean> {

    protected void onPreExecute() {
            ProgressDialog(context) progress = new ProgressDialog(context);
            progress.setMessage("Loading ...");
            progress.show();
    }

    protected Boolean doInBackground(Void... arg0) {
          // Do work
         return true;
    }

    protected void onPostExecute(Boolean result) {
        progress.dismiss();
        finish();
    }
}

これをアクティビティ クラスにネストし、次のように実行する必要があります。

new UpdateAsyncTask().execute();
于 2013-05-14T22:25:02.427 に答える
0

終わらせるってどういうこと?AsyncTask を呼び出すアクティビティのことですか? AsyncTask 内で完了することができます。必要なのは、アクティビティ クラスから AsyncTask にコンテキストを渡すことだけです。

private Context context;
protected Boolean doInBackground(Context c) {
      context=c;
     return true;
}
protected void onPostExecute() {
         progress.dismiss();
    ((Activity)context).finish();
}
于 2013-05-15T01:16:01.457 に答える