【问题标题】:TransactionTooLargeException with AutofillManager带有 AutofillManager 的 TransactionTooLargeException
【发布时间】:2019-04-24 23:27:17
【问题描述】:

我刚刚从用户那里得到了一个奇怪的堆栈跟踪:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=42, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/image:87 flg=0x43 }} to activity {org.walleth/org.walleth.activities.ImportActivity}: java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 3483676 bytes
at android.app.ActivityThread.deliverResults(ActivityThread.java:4436)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4479)
at android.app.ActivityThread.-wrap19(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1672)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6759)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)
Caused by: java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 3483676 bytes
at android.view.autofill.AutofillManager.updateSessionLocked(AutofillManager.java:904)
at android.view.autofill.AutofillManager.notifyValueChanged(AutofillManager.java:649)
at android.widget.TextView.notifyAutoFillManagerAfterTextChangedIfNeeded(TextView.java:9657)
at android.widget.TextView.sendAfterTextChanged(TextView.java:9641)
at android.widget.TextView.setText(TextView.java:5651)
at android.widget.TextView.setText(TextView.java:5498)
at android.widget.EditText.setText(EditText.java:113)
at android.widget.TextView.setText(TextView.java:5435)
at org.walleth.activities.ImportActivity.onActivityResult(ImportActivity.kt:192)
at android.app.Activity.dispatchActivityResult(Activity.java:7240)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4432)
... 9 more
Caused by: android.os.TransactionTooLargeException: data parcel size 3483676 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:766)
at android.view.autofill.IAutoFillManager$Stub$Proxy.updateSession(IAutoFillManager.java:468)
at android.view.autofill.AutofillManager.updateSessionLocked(AutofillManager.java:899)

还有其他人遇到过这个错误,或许找到了一个好的解决方法吗?我目前唯一的想法是禁用此文本视图的自动填充。

【问题讨论】:

  • 我认为这个问题可能在 Naught 设备中出现。您是否在应用中使用 AutoFillManager
  • 你能把这段代码贴在你得到这个异常的确切位置吗?
  • @Piyush 它发生在装有 Android 8.0.0 的设备上,我没有积极使用 AutoFillManager
  • @ManiyaJoe 我认为我的代码中唯一相关的部分是 EditText 上的 setText - 完整代码在这里:github.com/walleth/walleth

标签: android android-autofill-manager


【解决方案1】:

这些可能是您可能遇到此问题的区域。

  1. 在反序列化通过 Intent 发送的大量数据时。
  2. 从服务接收位图文件
  3. 从您尝试映射到模型类的服务器响应中接收大量字节。

可能的解决方案:

  1. 以小块的形式发送数据。
  2. 在通过服务或意图传输之前尝试压缩数据,然后将其解压缩回原始类型。

不知道这是否能澄清您的问题,但根据我的理解,这些可能是可能性。

【讨论】:

    猜你喜欢
    • 2012-10-29
    • 2023-03-25
    • 1970-01-01
    • 2015-08-15
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    相关资源
    最近更新 更多