剪贴板:TransactionTooLargeException:数据包大小

问题描述 投票:0回答:1

我以编程方式将大文本复制到剪贴板。

    ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    ClipData clipData = ClipData.newPlainText("Log", log.toString());
    clipboardManager.setPrimaryClip(clipData);

如果文本太大,则会出现以下异常:

java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 1048812 bytes
at android.content.ClipboardManager.setPrimaryClip(ClipboardManager.java:144)

我如何知道限制并复制尽可能多的文本?

android clipboard parcelable
1个回答
0
投票

这有时是一个致命错误,但根据文档,此错误到达的原因是什么

避免TransactionTooLargeException的关键是使所有事务保持相对较小。尝试最小化为参数和远程过程调用的返回值创建Parcel所需的内存量。避免传输大量的字符串或大型位图。如果可能,请尝试将较大的请求分解为较小的部分。

如果要实现服务,则可能有助于在客户端可以执行的查询上施加大小或复杂性约束。例如,如果结果集可能变大,则不允许客户端一次请求多个记录。或者,与其立即返回所有可用数据,不如先返回基本信息,然后让客户根据需要稍后再提供其他信息。

© www.soinside.com 2019 - 2024. All rights reserved.