Android开发人员都知道,Intent适用于在不同的Activity之间传递数据,包括参数、字符串、以及序列化的对象等。但是笔者所做的项目用到了使用Intent 传递Bitmap图片对象,图片的数据量相对来说是比较大的,那么intent能否胜任传递图片的任务呢?

首先很明显bitmap实现了Android中的Parcelable接口,可以序列化。因此理所当然能够通过intent传递,然而图片的大小有没有限制呢?

Bitmap

extends

Object

implements

Parcelable

答案是肯定的,Intent在传递数据时是有大小限制的,这里官方并未详细说明,不过通过实验的方法可以测出数据应该被限制在1MB之内(1024KB),笔者采用的是传递Bitmap的方法,发现当图片大小超过1024(准确地说是1020左右)的时候,程序就会出现闪退、停止运行等异常(不同的手机反应不同),因此可以判断Intent的传输容量在1MB之内。

传递大容量数据时:

在Activity或者组件之前传递信息时,一般采用intent绑定bundle的方式传值,但在使用过程中需要注意的是不要用bundle传递大容量数据:

传输一般的数据参数不会用到这么大的数据量,因此intent符合除图片之外的大部分使用场景,请放心使用吧。如果想传递图片那么建议使用其他方式,附录里提供了三种传递图片的方式。

附1:Android中传递图片的三种方式:

1. 如果是本地res中的资源文件可以用intent.putExtra("id", R.id.xxx);传递一个对应的id过去。在新activity中通过id取出图片。getResources().getDrawable(R.id.xxx);

2. 如果不是本地资源文件或者adapter中没有存储id,可以把drawable转为bitmap,用intent.putExtra("bitmap", bitmap);传递过去。因为intent只能传递实现序列化的类,即继承java 的Serializable接口或者android的Parcelable接口。drawable没有实现该接口所以不能传递。

3. 如果是通过线程什么的从网上拉取的图片,可以定义一个下载的工具类,并定义一个static的静态Map集合,每拉取成功一张图片就把该图片存入Map中作为缓存。key是该图片的拉取地址。然后通过intent把地址传递过去。在新activity中通过该工具类取得静态map,并通过传递过来的地址中map中取出该图片。

附2:Android中获取bitmap尺寸的方法

在不同的API版本中该方法的实现方式不一样,总的来说可以使用一下方法分别适用于api19、api12和更早的api。获得数据的单位是字节,自行转化为KB或MB。

public int getBitmapSize(Bitmap bitmap){

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){ //API 19

return bitmap.getAllocationByteCount();

}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1){//API 12

return bitmap.getByteCount();

}

return bitmap.getRowBytes() * bitmap.getHeight(); //earlier version

}附3:Intent API的中文翻译

android activity 大小限制,【Android】intent传递数据时,数据大小的限制问题相关推荐

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

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

  2. WCF+Restfull服务 提交或获取数据时数据大小限制问题解决方案

    WCF+Restfull服务 提交或获取数据时数据大小限制问题解决方案 参考文章: (1)WCF+Restfull服务 提交或获取数据时数据大小限制问题解决方案 (2)https://www.cnbl ...

  3. Android Activity间跳转与传递数据

    1 概述 Activity之间的跳转主要使用 startActivity(Intent intent); startActivityForResult(Intent intent,int reques ...

  4. android activity 回调函数,Android Activity的生命周期

    Activity的生命周期 Android系统根据activity的所处不同阶段对应的唤起其特定的回调函数来执行代码.activity的一系列有序的生命周期回调函数.本文将来讨论下activity各阶 ...

  5. android activity 淡入 动画,android – 如何在Activity转换上执行淡入淡出...

    您可以创建自己的.xml动画文件以淡入新活动并淡出当前活动: fade_in.xml android:interpolator="@android:anim/accelerate_inter ...

  6. android activity透明主题,Android应用的全透明效果--Activity及Dialog的全透明

    1.Activity全透明 同学给了这个有趣的代码,现在公布出来. 先在res/values下建colors.xml文件,写入:<?xmlversion ="1.0"enco ...

  7. android activity 渐变,关于Android的径向渐变高级编程的实现

    在最近的一系列文章,对midipad APP,有一个关于一个radialgradiant渲染每个padview利用的探讨,对审美的原因,这是一个软件层,而不是一个硬件层.在这个简短的系列中,我们首先看 ...

  8. android activity滑动切换,Android 向右滑动切换Activity, 随着手势的滑动而滑动的效果...

    [实例简介] Android 向右滑动切换Activity, 随着手势的滑动而滑动的效果,项目详情http://blog.csdn.net/xiaanming/article/details/2093 ...

  9. android activity pause,关于android:onPause()和onStop()在Activity中

    我是Android开发的新手,但我仍然无法理解活动中的onPause()和onStop()方法. 在我的应用程序中,我有一个名为Counter的静态类,该类将变量的状态保存在应用程序的内存中.我的应用 ...

  10. android activity 通知 service,android activity和service通信问题

    首先,题主有个理解错误的地方, startService 只是开启 service ,service运行在后台,还是有可能因内存不足而被杀死. 第二点, service 可以以混合启动的形式启动,也就 ...

最新文章

  1. Web服务器捉虫速记
  2. 项目经济规模的估算方法_估算英国退欧的经济影响
  3. yii不能没有提示验证错误信息_安装Mac系统时提示”应用程序副本不能验证 它在下载过程...”的解决方法...
  4. JVM程序计数器,虚拟机栈,本地方法栈
  5. 最优化学习---从解方程到最优化1
  6. AutoDWG DWG 转换 PDF 控制组件-ActiveX
  7. Algorithm:数学建模大赛(CUMCM/NPMCM)之05A《长江水质综合评价与预测》
  8. 浅谈IPv4/IPv6转换技术
  9. 2022怎么注册谷歌?手机号无法用于验证谷歌Gmail的成功解决方法
  10. 无法远程连接到计算机 虚拟内存,远程桌面连接显示内存不足怎么破?
  11. 保存数据时报:Incorrect string value: '\xF0\x9F\x91\x8D' for column 'f_char_name' at row 1
  12. 转载-Android 前沿UI
  13. Jenkins:設定一次後就很方便的排程工具
  14. 电源系统优化设计,低压差稳压器(LDO)如何选型?
  15. 360以安全之名做搜索,可信,还是欺世盗名?
  16. Android之手机文件夹目录详解
  17. 揭秘华为标准岗位工资(天涯)
  18. Android开发常用框架
  19. python爬虫工程师 成长之路八 Selenium WebDriver
  20. python turtle rgb模式 bad color sequence**错误

热门文章

  1. 这2种程序员的惊人差距,实在不忍直视...
  2. surface go 快乐装Ubuntu
  3. 如何利用同一个二维码识别手机系统(iOS或Android),自动跳转对应App应用市场或下载界面
  4. 求求了还有没有点击就送的小公司啊,有口饭吃就行
  5. 利用cad计算型材的弹性模量_常用材料弹性模量
  6. 任务三 WEB学习 笔记
  7. 贪吃蛇c++实现 实训认识小游戏
  8. 产品与团队——实用开发工具
  9. labview结合halcon条形码识别
  10. php 项目迁移注意事项,网站数据迁移规范及注意事项