Android AsyncTask在服务中-过量使用?

Android AsyncTask在服务中-过量使用?,android,Android,我现在正在做一些与网络相关的事情 public void postData() { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://www.xx.xx.php"); try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); na

我现在正在做一些与网络相关的事情

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
}
} 
public void postData(){
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://www.xx.xx.php");
试一试{
List nameValuePairs=新的ArrayList(2);
添加(新的BasicNameValuePair(“id”,“12345”);
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
HttpResponse response=httpclient.execute(httppost);
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
}捕获(IOE异常){
//TODO自动生成的捕捉块
}
} 
在异步任务中,我正在从服务执行该任务

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


感谢

一个
IntentService
有自己的线程,您不需要
异步任务
,但是一个正常的
服务
在UI线程上运行,您需要将耗时较长的操作移动到另一个线程(如使用
异步任务
)。在主UI线程上运行的
服务
在。

中说明,从:

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


因此,除非您使用
IntentService

好的,谢谢您的回答,否则这并不是一个过分的做法。“常规”服务和intentservice之间的主要区别是什么?@Johan你可以将
intentservice
视为
服务,你可以从主线程向其发送各种需要处理的请求(例如,从地址下载照片的请求)(您可以向该
IntentService
发送许多请求))。您可以使用
服务
完成需要更多时间的操作(例如,播放您喜爱的歌曲的mp3播放器)。他们的另一个优点是,他们一完成工作就死了。我明白了。在我的情况下,我的服务使用gps的onLocationChanged侦听器,并使用asynctask将位置发送到我的Web服务。在这种情况下,这听起来像是一个不错的解决方案吗?@Johan没关系,我看不出你的方法有任何错误。只需保持网络在
AsyncTask
中添加一些东西,这样用户会很高兴使用你的应用:)