我在我的应用程序中实现了AsyncTask,以正确地从互联网下载文件并将数据放入本地数据库。文件正在下载,一切正常。我也检查是否有互联网连接,如果没有任何,我在我的doInBackground方法返回0,什么导致我的AsyncTask调用“onPostExecute”方法,并且一切都按照它应该。但是我看到,如果互联网连接不好,例如我处于我的WiFi范围的边缘,AsyncTask有时会下载文件几分钟。这不是我想要的。所以我在onPreExecute方法处理程序中实现了我的AsyncTask。如何正确处理Android中的AsyncTask取消?
isFreezed = new Handler();
isFreezed.postDelayed(new Runnable() {
@Override
public void run() {
if (!isCancelled() && getStatus() != AsyncTask.Status.FINISHED){
cancel(true);
//Log.i("callingActivity", "Zbyt wolne połączenie, anulowanie.");
onPostExecute((long) 0);
}
}
},8000);
我取消我的AsyncTask。我看到,当我取消它时,onPostExecute方法没有执行,所以我手动调用它。这就是我的问题,谷歌说,它不应该手动调用。 我的思维方式很好,把处理程序取消任务,并继续与我的应用程序是一个很好的做法,或者我应该以其他方式吗? 我是对的,当我将取消AsyncTask,它的onPostExecute方法不会被调用?
有上要取消的任务,被炒鱿鱼的异步任务的onCancelled()重写。 – kha 2014-10-10 10:27:13