一段时间后取消异步任务
2022-09-03 14:17:24
这可能是一个重复的问题,但我没有找到我想要的东西。我在UI活动中调用AsyncTask,在doInBackground中,我调用了一个需要时间的方法。如果一段时间后数据未返回,我想中断此线程。下面是我尝试执行此操作的代码。new LoadData().execute();
class LoadData extends AsyncTask<String, String, String>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
startTime = System.currentTimeMillis();
}
protected String doInBackground(String... args)
{
DataCollector dc = new DataCollector();
data = dc.collectData(query);
//Here I check if the time is greater than 30 seconds then cancel
if(((System.currentTimeMillis()-startTime)/1000)>30)
{
cancel(true);
}
return null;
}
}
但这并不能阻止30秒后的任务,实际上它需要更多的时间。我也尝试过,但这也不起作用。get(long timeout, TimeUnit unit);
任何人都可以向我展示我该怎么做,或者我如何在doInBackground中使用isCancelled()。
谢谢。