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
}
} 

サービスから実行しているasynctaskで。

私が知りたいのは、ネットワークメソッドをサービスで直接実行するのに十分かどうかです? 私の知る限り、UIスレッドでは実行されないためです。

ありがとう

4

2 に答える 2

3

IntentServiceは独自のスレッドがあり、必要はありませんAsyncTaskが、通常Serviceは UI スレッドで実行され、時間がかかる操作を別のスレッドに移動する必要があります (を使用するなどAsyncTask)。Serviceメイン UI スレッドでの実行はdocsに記載されています。

于 2012-07-06T07:38:34.917 に答える
2

ドキュメントから:

サービスは個別のプロセスではありません。Service オブジェクト自体は、それが独自のプロセスで実行されていることを意味しません。特に指定がない限り、アプリケーションと同じプロセスで実行されます。

したがって、使用しない限り、やり過ぎではありませんIntentService

于 2012-07-06T07:39:40.443 に答える