在我的android项目中,我在一个活动中使用了很多AsynTask
。当我开始其他时,我需要停止一个AsynTask
。
我在我的android项目中使用myAsynTask.cancel(true);
。但它确实会阻止AsynTask
。
protected String doInBackground(String... args) {
HashMap<String, String> params = new HashMap<>();
params.put("id", args[0]);
Log.d("get value: ", params.toString());
JSONObject json = jParser.makeHttpRequest(url_comment, "GET", params);
Log.d("All matches: ", json.toString());
if(isCancelled()) {
finish();
}
else {
try {
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
JSONmatches = json.getJSONArray(TAG_vedio);
for (int i = 0; i < JSONmatches.length(); i++) {
JSONObject c = JSONmatches.getJSONObject(i);
String title = c.getString(TAG_title);
String url = c.getString(TAG_url);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_title, title);
map.put(TAG_url, url);
arrayList22.add(map);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return null;
}
答案 0 :(得分:1)
在isCancelled
执行循环时,您必须主动检查doInBackground
。
如果break
为真,你应该isCanceled
循环。
答案 1 :(得分:1)
可以随时通过调用
cancel(boolean)
取消任务。 调用此方法将导致后续调用isCancelled()
返回true。在调用此方法之后,改为onCancelled(Object)onPostExecute(Object)
之后将被调用doInBackground(Object[])
返回。确保取消任务 你应该尽快检查返回值 如果isCancelled()
定期doInBackground(Object[])
{} 可能的(例如在循环内)。