2

我目前正在做一些与网络相关的事情,

public void postData() {

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.xx.xx.php");

try {

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair("id", "12345"));

    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));


    HttpResponse response = httpclient.execute(httppost);

} catch (ClientProtocolException e) {
    // TODO Auto-generated catch block
} catch (IOException e) {
    // TODO Auto-generated catch block
}
} 

在我从服务执行的异步任务中。

我想知道的是它是否足以直接在服务中运行网络方法?因为 AFAIK 它不在 UI 线程上运行。

谢谢

4

2 回答 2

3

AnIntentService有自己的线程,您不需要在 UI 线程上AsyncTask正常Service运行,您需要将需要很长时间的操作移至另一个线程(如使用AsyncTask)。文档Service中说明了在主 UI 线程上的运行。

于 2012-07-06T07:38:34.917 回答
2

文档

服务不是一个单独的进程。Service 对象本身并不意味着它在自己的进程中运行;除非另有说明,否则它在与其所属的应用程序相同的进程中运行。

因此,除非您使用,否则这不是矫枉过正IntentService

于 2012-07-06T07:39:40.443 回答