我使用意图服务使用 FFMPEG 库压缩少量视频文件,压缩后,使用FTP将这些文件存储在服务器上。所以,我开始一个线程等待 FFPEG execute()
方法,直到它成功完成。
然后,我使用FTP将这些文件存储在服务器上。
工作正确完成,但最终返回illegalStateException
:
MessageQueue:处理程序(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 :(得分:0)
您可以尝试在单独的线程上运行处理程序。
HandlerThread handlerThread = new HandlerThread();
handlerThread.start();
并将处理程序附加到新线程
new ExecuteBinaryResponseHandler(mHandlerThread.getLooper());