2017-11-07 8 views
0

のJavaアンドロイドava.util.concurrent.ThreadPoolExecutor

at java.net.PlainSocketImpl.read(PlainSocketImpl.java:492) 
W/System.err:  at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) 
W/System.err:  at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:241) 
W/System.err:  at java.io.InputStream.read(InputStream.java:162) 
W/System.err:  at pl.eltegps.teminalmobile.Activity.MainActivity$connectTask3.doInBackground(MainActivity.java:1353) 
W/System.err:  at pl.eltegps.teminalmobile.Activity.MainActivity$connectTask3.doInBackground(MainActivity.java:1205) 
W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:288) 
W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
W/System.err:  at java.lang.Thread.run(Thread.java:841) 
+0

実際の例外がスローされました。これは、貼り付けた最初の行の直前の行の行です。 – Kraylog

+0

ログの@NimrodArgov私はこれを見る –

+0

あなたのコードをもっと投稿できますか?この 'AsyncTask'をどのように実行しますか?あなたはそれを1回または複数回実行していますか? – pleft

答えて

1

AsyncTaskドキュメントはいくつかあります:

while ((bytesRead = inputStream.read(content)) != -1) { 

この行は、私はこれを見たログで

astyntask内側ですスレッドルール:

スレッディングルール

このクラス が正しく動作するために従わなければならないいくつかのスレッドのルールがあります。

  • AsyncTaskクラスは、UIスレッド上でロードする必要があります。これはJELLY_BEANの時点で自動的に行われます。
  • タスク・インスタンスは、UIスレッドで作成する必要があります。
  • UIスレッドでexecute(Params ...)を呼び出す必要があります。
  • onPreExecute()、onPostExecute(Result)、doInBackground(Params ...)、onProgressUpdate(Progress ...)を手動で呼び出さないでください。
  • タスクは一度だけ実行することができます(第2の実行が試行された場合、例外がスローされます。)

あなたは一度だけ、複数回、同じタスクを実行することはできません。

UPDATEあなたの "paste.ofcode.org" URLで

あなたが(なぜ、2 & 3ブレークここ(大胆にマークされている)

ルール上のスレッドルールの3つのルールを破るようですAsyncTaskを実行するために、新しいスレッドを開始):?

thread = new Thread() { 
      @Override 
      public void run() { 
       new connectTask3().execute(); 
      } 
     }; 
     thread.start(); 

上記のコードを削除し、ただでそれを置き換える代わりに、新しいthreadを作成しないでください:

new connectTask3().execute(); 
+0

いいえ、私はこの同じオブジェクトを使用しません。私は新しいオブジェクトを作成して実行します –

+0

あなたの答えを更新し、関連するasynctaskがどのようにインスタンス化されて実行されるかを確認するコードですか? – pleft

+0

https://paste.ofcode.org/rVT6SeuPUL7eYWuP6XhpnQ –

関連する問題