首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用单独的线程执行http请求

如何使用单独的线程执行http请求
EN

Stack Overflow用户
提问于 2010-08-03 03:56:26
回答 1查看 62.1K关注 0票数 27

我有一个应用程序,它在用户单击某些按钮时执行FogBugz请求(特别是调用HTTP )。现在,我只是在应用程序启动时创建一个服务,然后调用该服务中的不同方法来完成请求。然而,当我这样做的时候,UI线程通常会挂起。我看过AsyncTask,但不确定它是否能完成我想要完成的任务。因为我需要立即解析HTTP请求返回的XML,所以我需要一个能够将该数据返回给UI线程的进程。ASyncTask能够做到这一点吗,或者有其他方法吗?

代码语言:javascript
复制
    public static InputStream makeRequest(String httpRequest)
    {
        In a separate thread, run HTTP Request, get back and process, return inputstream
    }

此方法由其他几个方法调用以执行HttpRequests。一旦返回inputstream,其他方法就会解析特定的信息。

EN

回答 1

Stack Overflow用户

发布于 2012-06-21 17:07:19

尝试使用AsyncTask。请转到此Link了解更多信息:

代码语言:javascript
复制
private class SyncIncoData extends AsyncTask<String, String, String> {
    ProgressBar pb;
    ProgressBar pbar;

    @Override
    protected String doInBackground(String... urls) {
        for (int i = 0; i <= 100; i++) {
            publishProgress(i);
        }
        return null;
    }

    @Override
    protected void onPreExecute() {

        super.onPreExecute();

        pb = (ProgressBar) findViewById(R.id.progressBarsync4);
        pb.setVisibility(View.VISIBLE);

    }

    @Override
    protected void onPostExecute(String result) {

        pb = (ProgressBar) findViewById(R.id.progressBarsync4);
        pb.setVisibility(View.INVISIBLE);

    }

    @Override
    protected void onProgressUpdate(String... values) {
        pbar = (ProgressBar) findViewById(R.id.progressBarpbar);
        pbar.setProgress(Integer.parseInt(values[0]));
        super.onProgressUpdate(values);
    }
}

编写doinbackgroud()内部http请求的程序

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3391272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档