Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何停止android的异步任务_Java_Android_Android Asynctask - Fatal编程技术网

Java 如何停止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

在我的android项目中,我在一个活动中使用了许多
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);}中继续工作