2016-05-02 22 views
0

ソケットで接続が確立されている間に「待機中」ダイアログを表示しようとしています。このコードがうまくいかない理由が分かりますか?onProgressUpdateは、AsyncTask(ソケット作成)の最後でのみ呼び出されます

onProgressUpdateは、doInBackgroundの最後に呼び出されます。私はconnectionSocket.connectがタイムアウトする前にそれを表示するつもりです。自分自身でうまく機能

次ビット

dialog = connection.dialog("progress"); 
     dialog.show(); 

@Override 
    protected Boolean doInBackground(String... ip) { 
     Log.i("CONNECTION","doInBackground : Creating socket"); 
     Boolean result = false; 
     try { 
      publishProgress(); 
      connectionSocket = new Socket(); 
      connectionSocket.connect(new InetSocketAddress(ip[0], connection.getServerPort()), 5000); 
      publishProgress(); 
      Log.i("CONNECTION","doInBackground : Socket created"); 
      result = true; 
     } catch (UnknownHostException e) { 
      Log.i("CONNECTION","doInBackground : Error creating socket. UnknownHostException"); 
     } catch (IOException ioe) { 
      Log.i("CONNECTION","doInBackground : Error creating socket. IOException"); 
     } 
     return result; 
    } 

    @Override 
    protected void onProgressUpdate(Void... values) { 
     super.onProgressUpdate(values); 
     Log.i("CONNECTION","onProgressUpdate"); 
     dialog = connection.dialog("progress"); 
     dialog.show(); 
    } 

はご協力いただきありがとうございます:*

答えて

1

あなたが代わりにonProgressUpdateのonPreExecuteでダイアログを表示する必要があります。 OnProgressUpdateは、作業中の特定のパーセンテージの更新がある長い操作に使用されます。

@Override 
protected void onPreExecute() { 
    dialog = connection.dialog("progress"); 
    dialog.show(); 
} 
+0

ありがとう、もちろん、それは意味があります...まだいくつかのUIの問題がありますが、期待どおりに動作します! – Fluffy

関連する問題