2017-01-19 1 views
0

インテントサービスを使用して、FFMPEGライブラリを使用してビデオファイルをほとんど圧縮せず、圧縮後にこれらのファイルをFTPを使用してサーバーに格納します。だから、私はFFPEG​​メソッドが正常に終了するまで待つスレッドを開始しました。FFMPEGライブラリを使用しているときにIntentServiceのillegalStateExceptionが発生しました

次に、これらのファイルをFTPを使用してサーバーに保存します。 作業が正しく行われているが、最終的にそれがillegalStateException返します

メッセージキュー:死者のスレッドでハンドラにメッセージを送信するハンドラ(android.view.ViewRootImpl $ ViewRootHandler){8895619}

10個のファイルがある場合、この例外は10回返されます。 この例外の理由は何か、どうすれば避けられますか?ここで

は、私が使用していハンドラである:

  fFmpeg.execute(command, new ExecuteBinaryResponseHandler() { 
      @Override 
      public void onFailure(String s) { 
       System.out.println(idx + "----------Failure: \n" + s.toString()); 
      } 

      @Override 
      public void onSuccess(String s) { 
       System.out.println(idx+ "----------Success: \n" + s.toString()); 
      } 

      @Override 
      public void onProgress(String s) { 
      } 

      @Override 
      public void onStart() { 
       System.out.println(idx+ " started"); 
      } 

      @Override 
      public void onFinish() { 
       totalProcessedFileCount++; 
       System.out.println(idx + "*****************Finished "+ totalProcessedFileCount); 
      } 
     }); 
+0

にハンドラをアタッチ問題は、使用しているハンドラに関連して、それがハンドラに送信されたメッセージが、内のスレッドがあることを説明しハンドラが作成されていません。あなたが使用しているハンドラを投稿し、その使用方法を知っていれば、より多くのヒントを得ることができます – petrumo

+0

@petrumo問題のハンドラコードを追加しました。 –

答えて

0

あなたが別のスレッドでハンドラを実行して試すことができます。

HandlerThread handlerThread = new HandlerThread(); 
handlerThread.start(); 

と、新しいスレッド

new ExecuteBinaryResponseHandler(mHandlerThread.getLooper()); 
関連する問題