android - 如何在异步类android上设置超时

标签 android performance

<分区>

这是我的布局代码;

   private class mainAdapter extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {
          String response = "";
          for (String url : urls) {
            DefaultHttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);
            try {
              HttpResponse execute = client.execute(httpGet);
              InputStream content = execute.getEntity().getContent();

              BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
              String s = "";
              while ((s = buffer.readLine()) != null) {
                response += s;
              }

            } catch (Exception e) {
              e.printStackTrace();
            }
          }
          return response;
        }

        @Override
        protected void onPostExecute(String result) {
            if(flagsearch)
            {   
                pd.dismiss();
                if(result.trim().contains("Result not found !"))
                {
                    Toast.makeText(getApplicationContext(), result.trim(), Toast.LENGTH_LONG).show();

                }
                else
                {
                    String limit=""+0;
                    Intent i= new Intent(Main_Search.this,Main_listview.class);
                    i.putExtra("line", result);
                    i.putExtra("limit",0);
                    i.putExtra("Alert", false);
                    i.putExtra("str_Descrption",str_desc);
                    i.putExtra("str_location", str_location);
                    startActivity(i);   
                }
                //Toast.makeText(getApplicationContext(), ""+result, Toast.LENGTH_LONG).show();
            }
            else
                edit_location.setText(result);      
            str_location= edit_location.getText().toString();
        }

        @Override
        protected  void onPreExecute()
        {
            if(flagsearch)
            {
            pd = ProgressDialog.show(Main_Search.this, "","Please wait...");
            }

        }
      }

我在主线程上调用异步类

mainAdapter mm= new mainAdapter();
                String    url="http://www.jobdiagnosis.com/servicesearch.php?keyword="+str_desc+
                        "&location="+str_location;
                url= url.replace(" ","%20");
                mm.execute(url);

程序运行良好,但某些站点从服务器获取数据需要很长时间,然后我想设置 time_out 但我不知道设置 Time_out

请帮助我使用 TIME_OUT 并告诉我为什么获取数据需要时间?

我真的很抱歉我的英语不好。

最佳答案

AsyncTaskdoInBackground 中使用这段代码

int socket_timeout = 3000;
int connection_timeout = 3000;
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, connection_timeout);
HttpConnectionParams.setSoTimeout(httpParams, socket_timeout);
DefaultHttpClient defaultHttpClient = new DefaultHttpClient(httpParams);
HttpGet httpGet = new HttpGet("http://google.com");
defaultHttpClient.execute(httpGet);

关于android - 如何在异步类android上设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20088292/

相关文章:

android - 从mysql错误填充android列表

php - 性能问题(缓存)- 更快地从数据库进行计算或存储它们

c# - 提高 DataTable.ReadXml 性能

PHP - 缓存 MySQL 查询并定期更新它

algorithm - 针对特定情况的最快排序算法

android - 我可以将我的 Android 应用程序构建为调试但使用发布 keystore 签名吗

java - 如何防止数据库关闭后线程继续运行?

java - 适用于 Google+ 照片的 Android API

android - 使用 ffmpeg 进行视频转换后在 iPhone 上播放视频

python - 在 py.test 中是否可以报告测试运行中生成的任意值?