android - 可以在 Intent 中传递的字符串数据的最大大小

标签 android

<分区>

intent extra 中可以传递的字符串数据是否有最大限制?下面的 String str 可以容纳多少数据?

intentI1.putExtra("MyString", str);

最佳答案

我在 Android API 级别 24 上的测试:

            Intent intent = new Intent(MainActivity.this, DetailActivity.class);
//            intent.putExtra("extra", new byte[1024 * 1024]); // 1024 KB = 1048576 B, android.os.TransactionTooLargeException
//            intent.putExtra("extra", new byte[1024 * 512]); // 512 KB = 524288 B, android.os.TransactionTooLargeException
//            intent.putExtra("extra", new byte[1024 * 506]); // 506 KB = 518144 B, android.os.TransactionTooLargeException
//            intent.putExtra("extra", new byte[1024 * 505]); // 505 KB = 517120 B, android.os.TransactionTooLargeException
            intent.putExtra("extra", new byte[1024 * 504]); // 504 KB = 516096 B, OK
            startActivity(intent);

android.os.TransactionTooLargeException https://developer.android.com/reference/android/os/TransactionTooLargeException.html

因为我需要向 Activity 发送大量数据,所以我使用以下解决方案(我知道,它并不完美,但它可以提供帮助):

public class ExtendedDataHolder {

    private static ExtendedDataHolder ourInstance = new ExtendedDataHolder();

    private final Map<String, Object> extras = new HashMap<>();

    private ExtendedDataHolder() {
    }

    public static ExtendedDataHolder getInstance() {
        return ourInstance;
    }

    public void putExtra(String name, Object object) {
        extras.put(name, object);
    }

    public Object getExtra(String name) {
        return extras.get(name);
    }

    public boolean hasExtra(String name) {
        return extras.containsKey(name);
    }

    public void clear() {
        extras.clear();
    }

}

然后在MainActivity中

ExtendedDataHolder extras = ExtendedDataHolder.getInstance();
extras.putExtra("extra", new byte[1024 * 1024]);
extras.putExtra("other", "hello world");

startActivity(new Intent(MainActivity.this, DetailActivity.class));

在 DetailActivity 中

ExtendedDataHolder extras = ExtendedDataHolder.getInstance();
if (extras.hasExtra("other")) {
    String other = (String) extras.getExtra("other");
}

关于android - 可以在 Intent 中传递的字符串数据的最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28729955/

相关文章:

android - 在对话框中使用 Drawable

java - 关于Android数据库

Android ADB 设备离线,无法发出命令

安卓布局 : Comments activity similar to the Facebook app

android - 将 SDK 更新到 Kitkat 4.4.2 后无法创建文件夹 'res/transition'

java - 如果 poll 不一定返回第一项,ConcurrentLinkedQueue 是一个好的选择吗?

Android GreenDao - 如何比较两个日期字符串?

android - ping 超时命令 -W 不适用于 Android

android - layout_weight 改变图像尺寸

android - 使用 PHP 从 RecyclerView 列表和 MySql 中删除项目