Вопрос по android-asynctask, android – Использование AsyncTask для запуска деятельности

10

Я использую asyncTask, чтобы показать диалог, а затем через несколько минут запустить новое действие.

к сожалению, что деятельность начинается до того, как задача завершена ???

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.

да, вы должны запустить его в своем методе onPostExecute, сразу после того, как вы покажете свой тост Tomislav Novoselec
метод не может вызываться внутри onPostExecute Mahmoud Emam
улучшить вашу скорость приема. Nishant

Ваш Ответ

4   ответа
5

ПозвониstartActivity(new Intent(LoginActivity.this, BuiltInCamera.class)); отonPostExecute() после отображения тост сообщения.

Таким образом, новая активность будет называться после вашегоAsyncTask кончено.

34

Да, вы можете начать деятельность с подкласса 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

Error: User Rate Limit Exceeded
activityError: User Rate Limit Exceeded
Error: User Rate Limit Exceededactivity != nullError: User Rate Limit Exceeded
Error: User Rate Limit Exceededstackoverflow.com/a/9118319/842697
Error: User Rate Limit Exceeded
5

Вы также можете использовать

    Intent intent = new Intent(activity, PageViewActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    activity.getApplicationContext().startActivity(intent);
Error: User Rate Limit Exceeded
5

ВызовstartActivity внутриonPostExecute методAsyncTask

Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededAsyncTaskError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Mahmoud Emam

Похожие вопросы