Mah*_*mam 10 android android-asynctask
我使用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();
}
Run Code Online (Sandbox Code Playgroud)
}
我从按钮点击监听器执行任务:S
private OnClickListener loginOnClick = new OnClickListener() {
public void onClick(View v) {
new LoginTask(LoginActivity.this).execute();
startActivity(new Intent(LoginActivity.this, BuiltInCamera.class));
}
};
Run Code Online (Sandbox Code Playgroud)
有没有办法从我的subClass ofAsyncTask startActivity.
waq*_*lam 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));
}
Run Code Online (Sandbox Code Playgroud)
进行此更改后,请确保从中删除startActivityOnClickListener
调用此startActivity(new Intent(LoginActivity.this, BuiltInCamera.class));从onPostExecute()显示敬酒消息之后.
通过这种方式,在您AsyncTask结束后将调用新活动.
小智 5
你也可以使用
Intent intent = new Intent(activity, PageViewActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activity.getApplicationContext().startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37115 次 |
| 最近记录: |