如何在android中正确实现AsyncTask?

时间:2014-08-24 10:54:34

标签: android json android-asynctask

在实现AsyncTask期间,我在progressDialog中设置了setCancelable(true)。但是当用户点击屏幕或按下' Back'加载时按钮,对话框消失,该活动没有显示数据。我必须再次按“返回”按钮。回到之前的活动。 如果我设置了setCancelable(false),那么用户点击屏幕就没有效果了,然后“返回”#39;按钮也不起作用。我想实现这一点 - 点击屏幕应该没有任何效果,并按下'返回'中间的按钮应该将用户带回以前的活动。当互联网太慢而对话框在屏幕上花费太多时间时,这种情况就会到来。 此外,我尝试在我的JSONParserclass中设置connectiontimeout,并在时间超过10秒时显示对话框,但是当时间超过10秒时没有任何反应。

HttpParams httpParams = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParams,  10000);
            DefaultHttpClient httpClient = new DefaultHttpClient(httpParams);
            String paramString = URLEncodedUtils.format(params, "utf-8");
            url += "?" + paramString;
            HttpGet httpGet = new HttpGet(url);

            HttpResponse httpResponse = httpClient.execute(httpGet);
            StatusLine statusLine = httpResponse.getStatusLine();
            int statusCode = statusLine.getStatusCode();
            if (statusCode == 200) {
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();
            } else{
                Toast.makeText(mContext,"Failed to fetch data",Toast.LENGTH_SHORT).show();
            }

1 个答案:

答案 0 :(得分:0)

对话框一打开就会获得焦点。您可以通过在对话框的onCancel()回调中调用finish()来将用户带到上一个活动:

dialog.setCancelable(true):
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {         
    @Override
    public void onCancel(DialogInterface dialog) {
        //logic for back key goes here
         finish();
    }
});