我正在使用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)); } };
有没有办法从我的subClassAsyncTask启动活动.
解决方法
是的,您可以从AsyncTask的子类开始活动.见下文:
@Override protected void onPostExecute(Boolean result) { Toast.makeText(activity,Toast.LENGTH_LONG).show(); activity.startActivity(new Intent(activity,BuiltInCamera.class)); }
进行此更改后,请确保从OnClickListener中删除startActivity