12

asyncTaskを使用してDialogを表示し、数分後に新しいアクティビティを起動しています。

残念ながら、そのアクティビティはタスクが終了する前に開始されます???

package com.android.grad;

import android.app.Activity;

import android.app.ProgressDialog;

import android.os.AsyncTask;

import android.widget.Toast;

public class LoginTask extends AsyncTask<Void, Void, Boolean> {
private Activity activity;
private ProgressDialog pd;

public LoginTask(Activity activity) {
    this.activity = activity;
}

@Override
protected void onPreExecute() {
    pd = ProgressDialog.show(activity, "Signing in",
            "Please wait while we are signing you in..");
}

@Override
protected Boolean doInBackground(Void... arg0) {
    try {
        Thread.sleep(10000000);
    } catch (InterruptedException e) {
    }
    pd.dismiss();
    return true;
}

@Override
protected void onPostExecute(Boolean result) {
    Toast.makeText(activity, Boolean.toString(result), Toast.LENGTH_LONG).show();
}

}

そして私はボタンクリックリスナーからタスクを実行します:S

private OnClickListener loginOnClick = new OnClickListener() {

        public void onClick(View v) {
            new LoginTask(LoginActivity.this).execute();
            startActivity(new Intent(LoginActivity.this, BuiltInCamera.class));
        }
    };

AsyncTaskのサブクラスからstartActivityを実行する方法はありますか?

4

4 に答える 4

35

はい、AsyncTask のサブクラスからアクティビティを開始できます。下記参照:

@Override
protected void onPostExecute(Boolean result) {
    Toast.makeText(activity, Boolean.toString(result), Toast.LENGTH_LONG).show();

    activity.startActivity(new Intent(activity, BuiltInCamera.class));
}

この変更を行った後、 startActivityを必ず削除してください。OnClickListener

于 2012-05-24T12:00:21.023 に答える
5

のメソッドstartActivity内で呼び出すonPostExecuteAsyncTask

于 2012-05-24T11:59:07.367 に答える
5

トーストメッセージを表示した後、これstartActivity(new Intent(LoginActivity.this, BuiltInCamera.class));を呼び出します。onPostExecute()

このようにして、あなたAsyncTaskが終わった後に新しいアクティビティが呼び出されます。

于 2012-05-24T12:00:51.873 に答える