我有一个异步任务。在对话框片段的 oncreate 视图中,我正在创建我的 asynctask 的对象,如下所示(示例代码)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
cashInValidatorListner = new CashInValidatorListner(mSessionManager.getCustomerId(),mSessionManager.getPosId(), this);
}
现在在 onclick 我正在执行异步任务
@Override
public void onClick(View v) {
if(v==ok)
{
if(mHomeActivity.mProgressDialog!=null && !mHomeActivity.mProgressDialog.isShowing()){
mHomeActivity.mProgressDialog.show();
}
cashInValidatorListner.execute();
}
}
我为此进度条添加了 oncancellistner
@Override
public void onCancel(DialogInterface dialog) {
if(dialog==mProgressDialog)
{
mDialogExtraOptions.cashInValidatorListner.cancel(true);
Toast.makeText(getBaseContext(), "Task Cancled", Toast.LENGTH_SHORT).show();
}
}
我第一次取消异步任务时,它会被取消,但是再次执行它时会出现错误,说无法执行已执行的任务。
当我尝试在每次用户单击确定按钮时在 onclick 上创建对象时,问题就这样解决了
@Override
public void onClick(View v) {
if(v==ok)
{
if(mHomeActivity.mProgressDialog!=null && !mHomeActivity.mProgressDialog.isShowing()){
mHomeActivity.mProgressDialog.show();
}
cashInValidatorListner = new CashInValidatorListner(mSessionManager.getCustomerId(),mSessionManager.getPosId(), this);
cashInValidatorListner.execute();
}
}
在这里它工作正常,我的问题是为什么在第一种情况下第二次运行异步任务时没有执行?