致命异常:Cloudinary OnProgress 方法中的 java.lang.RuntimeException 数组长度错误

Posted

技术标签:

【中文标题】致命异常:Cloudinary OnProgress 方法中的 java.lang.RuntimeException 数组长度错误【英文标题】:Fatal Exception: java.lang.RuntimeException bad array lengths at Cloudinary OnProgress method 【发布时间】:2019-11-27 00:04:00 【问题描述】:

当我尝试上传到 Cloudinary 服务以减小视频大小时,有极少数用户在特定设备版本上崩溃。他们因以下错误而崩溃 -

Fatal Exception: java.lang.RuntimeException
bad array lengths

我似乎无法在我的设备上重现该错误,而且它似乎不再出现。这是整个跟踪 -


Fatal Exception: java.lang.RuntimeException
bad array lengths
android.os.Parcel.readIntArray (Parcel.java:905)
android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag (INotificationManager.java:732)
android.app.NotificationManager.notify (NotificationManager.java:230)
android.support.v4.app.NotificationManagerCompat.notify (NotificationManagerCompat.java:212)
android.support.v4.app.NotificationManagerCompat.notify (NotificationManagerCompat.java:196)
com.onemdtalent.app.util.CloudinaryListenerService.onProgress (CloudinaryListenerService.java:80)
com.cloudinary.android.DefaultCallbackDispatcher$1.handleMessage (DefaultCallbackDispatcher.java:66)
android.os.Handler.dispatchMessage (Handler.java:111)
android.os.Looper.loop (Looper.java:207)
android.app.ActivityThread.main (ActivityThread.java:5740)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:905)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:766)


这里是相关的 OnProgress 方法 -


 @Override
    public void onProgress(String requestId, long bytes, long totalBytes) 
        int x = 5 / 0;
        if (totalBytes > 0) 
            double progressFraction = (double) bytes / totalBytes;
            int progress = (int) Math.round(progressFraction * 1000);
            mBuilder.setProgress(1000, ((100 / 3) * 2) * 10 + (progress / 3), false); //include compress and storage progress components to final progress calculation
            mBuilder.setContentText(String.format("Uploading video: %d%% (%d KB)", (int) ((((100 / 3) * 2) * 10 + (progress / 3)) * 0.1), bytes / 1024));
         else 
            mBuilder.setProgress(1000, 1000, true);
            mBuilder.setContentText(String.format("%d KB", bytes / 1024));
            onError(new Throwable("Something wrong with file. "));
        
        mManagerCompat.notify(NOTI_ID, mBuilder.build());

    

过去 2 天我一直在搜索这个 bug,它似乎是一个与操作系统相关的 bug,没有任何已知的修复。如果有人能指出可能导致问题的任何线索,我很乐意听到。

【问题讨论】:

【参考方案1】:

这是来自 Cloudinary 的 Shirly :) 如果再次发生这种情况,您能否与我们联系并提供时间戳和云名称以进行进一步调查? 谢谢!

【讨论】:

以上是关于致命异常:Cloudinary OnProgress 方法中的 java.lang.RuntimeException 数组长度错误的主要内容,如果未能解决你的问题,请参考以下文章

cloudinary java无法上传图片

将 Cloudinary 与 Adob​​e AEM 集成

获取“致命异常 AsyncTask #1”

获取 Android 运行时:致命异常

片段中的Android致命异常

致命异常主要android