2016-10-28 12 views
0

私のアプリケーションでネットワークを管理するサービスを実装しようとしています。このサービスは、複数のアクティビティから外部サーバーと通信するために使用されます。サービスでのネットワーク接続の初期化

サーバーとの接続をいつ、どのように初期化する必要がありますか?私はこのようなサービスののonCreateメソッドでこれをやって考えた:

@Override 
public void onCreate() { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try{ 
       socket = new Socket(HOST, PORT); 

       ... 
      } 
      catch(IOException e){ 
       // How to manage this exception? 
      } 
     } 
    }); 
} 

しかし、接続エラーは、私はクライアント(このサービスを呼び出すアクティビティ)にそれを言うことができるどのように起こるであろうか?

答えて

1

サービスの代わりにIntentServiceを使用することを検討する必要があります。

メインスレッドで実行されないため、onHandleIntent(インテント)を上書きしてネットワークジョブを実行できます。

のAndroid開発者ドキュメント

すべての要求は、単一のワーカースレッドで処理されている - 彼らは必要な限りかかる場合があります(と、アプリケーションのメインループをブロックしません)が、唯一つの要求がで処理されます時間。

あなたが複数の活動でそれを使用しようとしているとあなたが応答を期待している場合great example here

はまた、私はusing an AsyncTaskLoaderを検討する見ることができるサービスの応答に関する活動に通知します。

関連する問題