【问题标题】:illegalStateException in IntentService while using FFMPEG library使用 FFMPEG 库时 IntentService 中的非法状态异常
【发布时间】:2017-01-20 22:21:04
【问题描述】:

我正在使用意图服务使用 FFMPEG 库压缩少量视频文件,压缩后,使用 FTP 将这些文件存储在服务器上。所以,我启动了一个线程来等待 FFPEG execute() 方法,直到它成功完成。

然后,我使用 FTP 将这些文件存储在服务器上。 工作正确完成,但最终返回illegalStateException

MessageQueue: Handler (android.view.ViewRootImpl$ViewRootHandler) {8895619} 向死线程上的 Handler 发送消息

如果我有 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);
            }
        });

【问题讨论】:

  • 问题与你正在使用的handler有关,它描述了有消息发送到handler,但是创建handler的线程已经死了。如果您发布您正在使用的处理程序及其用法,我可以提供更多提示
  • @petrumo 我添加了有问题的处理程序代码。

标签: android illegalstateexception android-ffmpeg


【解决方案1】:

您可以尝试在单独的线程上运行处理程序。

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

并将处理程序附加到新线程

new ExecuteBinaryResponseHandler(mHandlerThread.getLooper());

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 2017-08-09
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多