2017-04-09 4 views
1

私は現在アンドロイド向けのゲームを開発中です。このゲームには重いネットワークがあります。良いアンドロイドネットワークの練習

メッセージを受信するためとメッセージを送信するための2つの別々のスレッドを持つ方がよいでしょうか。または、メッセージを送受信するための単一のスレッドを持つ方がよいでしょうか?

public static void init(String h){ 
    host=h; 
    connected=false; 
    instance = new Client(); 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      group = new NioEventLoopGroup(); 
      try{ 
       bootstrap = new Bootstrap() 
         .group(group) 
         .channel(NioSocketChannel.class) 
         .handler(instance); 

       channel = bootstrap.connect(host,PORT).sync().channel(); 
       connected=true; 

      } catch (Exception e) { 
       if (notifier!=null){ 
        notifier.onServerNoLongerReachable(); 
       } 
       e.printStackTrace(); 
      } 
     } 
    }).start(); 
} 

public static void setNotifier(ClientInterface notif){ 
    notifier = notif; 
} 

私はネッティーを使用していると私は私の活動は、スレッドを使用して

public interface ClientInterface{ 
    void onReceive(String msg); 
    void onServerNoLongerReachable(); 
} 
+0

1つのスレッドが理想的である:あなたはRxJava/wのレトロフィットを使用することができ、networkCallについてはhttps://github.com/ReactiveX/RxAndroid

https://developer.android.com/guide/components/processes-and-threads.html

それともCricket_007として、あなたはRxJavaを見てみる必要があります。 使用Asynctaskが良いです質問を促すために現在どのような問題が発生していますか?そして、あなたは 'RxJava'を使用しています。なぜなら、それはネットワーク要求を助けるからです。 –

+0

現在、問題は発生していませんが、間違った方法で行かないことを確認しています。 – logan20

+0

例としてコードを提供できますか? –

答えて

0

を実装するカスタム・インタフェースは、Android Devのための良い方法ではありません持っています。メッセージあたり http://square.github.io/retrofit/

+0

これは本当に質問に答えませんが、1)AsyncTaskはソケット/チャネル通信を注意深く処理する必要があるからです。 2)問題の 'NioEventLoopGroup'はRxに相当するものを持つ必要があるので、ドキュメントを指すだけでそこには役立たないでしょう –

関連する問題