2017-01-19 4 views
0

Я использую службу намерения для сжатия нескольких видеофайлов с использованием библиотеки FFMPEG и после сжатия хранят эти файлы на сервере с использованием FTP. Итак, я начал поток, чтобы дождаться FFPEGexecute() метод до его успешного завершения.illegalStateException в IntentService при использовании библиотеки FFMPEG

Затем я храню эти файлы на сервере, используя FTP. Работа выполнена правильно, но в конце концов он возвращается illegalStateException:

MessageQueue: Handler (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()); 
Смежные вопросы