如何从此AsyncTask中实现的ProgressDialog中取消AsyncTask。
@Override
protected Void doInBackground(Void... params)
{
try
{
FTPHelper ftpHelper = new FTPHelper(_context);
ftpHelper.SincronizarArquivos();
}
catch...
@Override
protected void onPreExecute()
{
_dialog.setMessage("Aguarde, sincronizando arquivos...");
_dialog.setCancelable(false);
_dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancelar", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
// This not works for cancel AsyncTask
cancel(true);
...
因为我取消或返回doInBackground(Void ... params)中没有循环。如何从ProgressDialog取消AsyncTask?
答案 0 :(得分:0)
对话框和AsyncTask都有一个'取消'方法,所以当您在对话框中调用取消时,它会取消对话框。
解决方案是让对话框调用AsyncTask的cancel函数。从问题中的代码我可以非常推断对话和任务在代码中的链接方式,但实质上,如果......
AsyncTask myAT;
然后在对话框中:
myAT.cancel();
答案 1 :(得分:0)
呼叫
fdescribe
在MyAsyncTask.this.cancel(true);
内。
此处Dialog
是MyAsyncTask
子类的名称。
注意:如果在AsyncTask
Dialog
,这将有效(仅限)