出门一步,便是江湖,江湖上有许多流言。

比如这条:

intent传递是有大小限制的,具体在40KB左右。

当然也有传言说是1M左右。

数百头母驴为何半夜惨叫? 小卖部安全套为何屡遭黑手? 女生宿舍内裤为何频频失窃? 连环强奸母猪案,究竟是何人所为? 老尼姑的门夜夜被敲,究竟是人是鬼? 数百只小母狗意外身亡的背后又隐藏着什么? 这一切的背后, 是人性的扭曲还是道德的沦丧? 是性的爆发还是饥渴的无奈? 欢迎观看今天的《走进安卓》


停,停,说好的不打脸呢。。

研究开始

想要研究intent到底能传递多大内存的数据,你必须给他传一个数据(这不是废话么),然后后去到这些数据的大小,进行传递,根据实际程序运行情况,来观察传递的极限。由于一般对象大小不容易获取,这里采用bitmap来传输,可以用bitmap的getByteCount()方法获得大小

Tips: 图片是以像素矩阵的形式存在的

本文出自: http://blog.csdn.net/wingichoy/article/details/50679322

1.新建一个测试环境,MainActivity

在布局中添加一个按钮

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin"tools:context="com.wingsofts.progresscircle.MainActivity"><Button
     android:onClick="test"android:layout_width="wrap_content"android:layout_height="wrap_content" />
</RelativeLayout>

2.在onClick()中加载图片,并且进行传递

public void test(View v){mBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.p512);Log.e("wing","图片内存的大小是"+mBitmap.getByteCount()/1024+"kb");Intent intent = new Intent(this,MainActivity.class);intent.putExtra("test", mBitmap);startActivity(intent);}

注意这里打了一下log,获得图片在内存中所占的大小。这里为了方便,我已经把图片所需要的大小命为文件名。如下:

在接受的时候 打一下log,判断是否传输成功

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if(getIntent().getParcelableExtra("test")!=null){Log.e("wing","接收到了数据" + toString());}}

击破流言

江湖传闻,超过40k的intent会吃成胖子,继而体内爆炸。我们就先从40KB下手,用一个93KB的图片做实验。 运行及Log如下:

观察到93KB的图片传输成功,那么这条流言不攻自破了。

第二条流言呢

我们拿一个498KB的图片做测试:

看到传输成功了。。

接着再来传输1168KB的图片:

可以看到 大于1M的图片导致intent不能正常传输,并且无法启动activity

然而真的是小于1M都能传输吗?

本着研究的精神,我们在测试一下别的大小,650KB的

日了狗了!!程序直接闪退,而且没有异常提示

现在回头想想,刚才传输了一个498的成功传输,650的却出现了问题,难道512也是一个坎?

来试试512KB的

哑巴里,果然也崩了。。

继续试验 507挂了,
……
在继续 506 挂了
……
再继续 505 ,正常!!!!

试验得出505是一个app正常运行的极限值了。

有朋友指出,可能和运存大小有关,我将运存分别设置为256MB,1G,2G测试结果相同,另外还有朋友指出厂商可以自定义,这个我没有真机无法测试。。

其实这个研究只是为了防止面试官问你intent缺陷时候你答大小限制具体是多少,现在我们至少知道了40kb的流言是错误的。研究的意义也不大,反正记住,intent传递值尽量小就可以了

来总结下

1.当大小为505以下的时候,正常传输
2.当大小为505-1024的时候,程序闪退,没有异常
3.当大小大于1024的时候,log会显示 !!! FAILED BINDER TRANSACTION !!!

这些是实验结果,具体的原因是啥,笔者水平有限,就不深究了,有兴趣的可以继续研究~~~ 有错误的话 可以提出 欢迎一起讨论

欢迎关注我的博客 谢谢!

江湖问题研究-- intent传递有没有大小限制,是多少?相关推荐

  1. intent传递有没有大小限制,是多少?

    intent 传递数据有大小限制 数据大于1兆 (2014kb) 的时候 就会报错 不同的手机内存不一样 传递的数据也各有差异(500k-1000k), 但是不会超过1024KB 就会报错.

  2. 【转】Android 之最新最全的Intent传递数据方法

    原文地址:https://www.jianshu.com/p/1169dba99261 intent传递数据 为什么要和intent单独拿出来讲,因为Intent传递数据也是非常重要的 一.简单的传递 ...

  3. Activity之间使用intent传递大量数据带来问题总结

    转载:大飞 http://blog.csdn.net/rflyee/article/details/47441405 Activity之间使用Parcel传递大量数据产生的问题. Activity之间 ...

  4. Android底层隐私数据,Android Intent传递数据底层分析详细介绍_Android_脚本之家

    Android  Intent传递数据底层分析详细介绍 我们知道在Activity切换时,如果需要向下一个ActivityB传递数据,可以借助Intent对象的putExtra方法. 但是不知各位有没 ...

  5. 从Zygote孵化frameworks进程,分析StartActivity流程中intent传递数据的最大值。

    Pangu-Immortal (Pangu-Immortal) · GitHub 当我们用Intent传输大数据时,有可能会出现错误: val intent = Intent(this@MainAct ...

  6. android中intent放数据类型,Android Intent传递数据底层分析详细介绍

    Android  Intent传递数据底层分析详细介绍 我们知道在Activity切换时,如果需要向下一个ActivityB传递数据,可以借助Intent对象的putExtra方法. 但是不知各位有没 ...

  7. Intent传递Bitmap

    最近有人问道如何在两个activity跳转的过程中携带Bitmap跳转过去,在网上找了很多这样的解答,但是绝大多部分并没有达到我想要的结果,因此我将我实现的几行代码与大家一起分享. 这个是第一个Act ...

  8. intent传递较大数据的解决和intent不能传递较大数据的原因

    一.首先提供需要在activity之间用intent传递较大数据的方法.intent不能传递较大数据,需要传递数据的时候,写一个操作类: public class DataHelper {privat ...

  9. 使用Intent传递对象

    以下介绍两种通过Intent传递自定义对象的方法. Serializable方式 Serializable的意思是序列化,序列化就是将一个对象转换成可存储或可传输的状态,这样就可以做到将该对象在网络上 ...

最新文章

  1. 如何授予Domain User AD加域权限
  2. Bitmap,byte[],Drawable相互转化
  3. 以太网实习_一位工科男在拿到华为实习生offer后的面经干货
  4. Bat 循環執行範例
  5. 虚拟form 下载文件
  6. 快手“连横”京东,是志同道合还是抱团取暖?
  7. Android 内存管理 Memory Leak OOM 分析
  8. 闲谈“个人核心竞争力”与“危机感” !!!
  9. C语言编杂志程序,c语言程序错误修改
  10. QT样式表(QStyleSheet)
  11. gson和json-lib的区别
  12. 学python lesson3
  13. 3d之家开机号计算机网,3d之家最新开机号
  14. 三角函数π/2转化_高中诱导公式全集,有了它,三角函数公式一网打尽
  15. HikariDataSource 配置详解
  16. 2020线上夏令营感受
  17. 计算机手机远程控制,手机怎么远程控制电脑?手机远程控制电脑步骤详解
  18. 货拉拉客户端通用日志组件 - Glog
  19. 转:Spark案例:Scala版统计单词个数
  20. Leetcode883 三维形体投影面积 高效解法

热门文章

  1. 操作系统基本原理概述
  2. 电路板排针拆除(拔出)方法
  3. win10设置同时连接有线和wifi同时能访问内网和外网
  4. C语言标准化输入、输出字符
  5. CCLE 2022 第五届中国教育后勤展览会
  6. x²-dy²=-1有多少整数解?近30年无人解开的数学难题有答案了
  7. 1:基本初等函数的性质
  8. 一专多能、刻意练习和终身成长
  9. 题目:给定一个数组并查找数组里边的元素(C实现),每日一题防止颓废~达咩~~
  10. 真Unity3d_profiler调试