kotlin 由于TransactionTooLarge错误,Webview Activity崩溃

hgqdbh6s  于 12个月前  发布在  Kotlin
关注(0)|答案(2)|浏览(142)

我使用webview来呈现一个表单。应用程序在onPageStarted方法后崩溃,在LogCat中我发现以下错误。

java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 603696 bytes
        at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:160)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: android.os.TransactionTooLargeException: data parcel size 603696 bytes
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(Binder.java:1127)
        at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:4027)
        at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:144)
        at android.os.Handler.handleCallback(Handler.java:873) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

我没有在OnSavedInstanceState()中保存任何内容。

luaexgnf

luaexgnf1#

WebView本身可能正在保存一个超过Binder事务缓冲区限制的大状态。

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    outState.putParcelable("android:webViewState", null)
}

这将WebView状态替换为null值,确保它不会被保存。

lymnna71

lymnna712#

添加

webView.getSettings().domStorageEnabled = true

在加载URL之前和加载URL之后添加这两行,它将工作。

webView.webChromeClient = WebChromeClient()
webView.webViewClient = WebViewClient()

相关问题