Вопрос по android-asynctask, android – Использование AsyncTask для запуска деятельности
Я использую 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
ответа
Да, вы можете начать деятельность с подкласса 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 Exceededstackoverflow.com/a/9118319/842697
Похожие вопросы
да, вы должны запустить его в своем методе onPostExecute, сразу после того, как вы покажете свой тост
метод не может вызываться внутри onPostExecute
улучшить вашу скорость приема.