Java 如何停止android的异步任务
在我的android项目中,我在一个活动中使用了许多Java 如何停止android的异步任务,java,android,android-asynctask,Java,Android,Android Asynctask,在我的android项目中,我在一个活动中使用了许多AsynTask。当我启动另一个时,我需要停止一个AsynTask 我正在使用myAsynTask.cancel(true)在我的android项目中。但它确实停止了AsynTask protected String doInBackground(String... args) { HashMap<String, String> params = new HashMap<>(); par
AsynTask
。当我启动另一个时,我需要停止一个AsynTask
我正在使用myAsynTask.cancel(true)代码>在我的android项目中。但它确实停止了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;
}
受保护的字符串doInBackground(字符串…args){
HashMap params=新的HashMap();
参数put(“id”,参数[0]);
d(“get value:,params.toString());
JSONObject json=jParser.makeHttpRequest(url_注释,“GET”,参数);
Log.d(“所有匹配项:,json.toString());
如果(isCancelled()){
完成();
}
否则{
试一试{
int success=json.getInt(TAG_success);
如果(成功==1){
JSONmatches=json.getJSONArray(TAG_-vedio);
for(int i=0;i
在doInBackground
中执行循环时,您必须主动检查isCancelled
如果isCancelled
为真,则应中断该循环。在doInBackground
中执行循环时,必须主动检查isCancelled
如果被取消
是真的,你应该中断
循环。来自官方:
通过调用cancel(boolean)
,可以随时取消任务。
调用此方法将导致对isCancelled()
的后续调用
返回true。调用此方法后,改为OnCancell(对象)
onPostExecute(对象)
的
doInBackground(Object[])
返回。确保任务已取消
您应该尽可能快地检查
isCancelled()
定期从doInBackground(Object[])
执行,如果
可能(例如,在循环内。)
来自官方:
通过调用cancel(boolean)
,可以随时取消任务。
调用此方法将导致对isCancelled()
的后续调用
返回true。调用此方法后,改为OnCancell(对象)
onPostExecute(对象)
的
doInBackground(Object[])
返回。确保任务已取消
您应该尽可能快地检查
isCancelled()
定期从doInBackground(Object[])
执行,如果
可能(例如,在循环内。)
在这种情况下,您应该为webservice请求使用库。例如,改装是这项工作的最佳选择。它的链接:。它安排并支持多个请求。在这种情况下,您应该使用一个库来处理webservice请求。例如,改装是这项工作的最佳选择。它的链接:。它安排并支持多个请求。它首先调用isCancelled(),但在isCancelled()运行后也会调用onPostExecute(对象)。请检查
isCancelled()
值,如果为false,则在postExecute()
if(isCancelled()){this.cancel(true);}中继续工作else{listView.setVisibility(View.GONE);}
它首先调用isCancelled(),但在isCancelled()运行后也调用onPostExecute(Object)。请检查isCancelled()
value,如果为false,则在postExecute()
if(isCancelled()){this.cancel(true);}else{listView.setVisibility(View.GONE);}中继续工作