Android 在AsyncTask中中止AsyncTask
如何从此异步任务中实现的ProgressDialog中取消异步任务Android 在AsyncTask中中止AsyncTask,android,android-asynctask,Android,Android Asynctask,如何从此异步任务中实现的ProgressDialog中取消异步任务 @Override protected Void doInBackground(Void... params) { try { FTPHelper ftpHelper = new FTPHelper(_context); ftpHelper.SincronizarArquivos(); } catch... @Override protected void o
@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?对话框和AsyncTask都有一个“cancel”方法,因此当您在对话框中调用cancel时,它会取消对话框 解决方案是让对话框调用AsyncTask的cancel函数。从问题中的代码,我不能很好地推断对话框和任务在代码中的链接方式,但本质上,如果
AsyncTask myAT;
然后在对话框中:
myAT.cancel();
召唤
在对话框中
这里的MyAsyncTask
是AsyncTask
子类的名称
注意:如果
对话框
在异步任务
中实例化,则(仅)这将起作用。您似乎应该在FTPHelper.SincronizarArquivos
方法中实现一些要检查的标志,然后在onClick
回调上设置该标志。
MyAsyncTask.this.cancel(true);