Intent附加(Extra)大小限制

Intent是Android系统中十分重要的部分,负担着不同组件之间的沟通桥梁,它可以携带数据,从一个组件传递到另一个组件中。

在做一个图库部分的时候,根据网络传输来的图片状态列表,展示一个网格状的图库,点击之后进入一个由ViewPager为主的大图查看Activity。这个时候需要将整个图片状态列表传递给大图查看Activity。

最初,我使用intent.putParcelableArrayListExtra将整个状态列表传送给大图查看Activity,运转正常。但是在某些查看一些很靠后图片的时候,就出现了整个崩溃,回到最原始Activity的情况。

经过查找资料,Intent(包括Bundle一共)大小限制为不到1MB,所以在超过这个限制之后,就会出现静默崩溃的现象,解决方案两种:

一、写入临时文件或者数据库,通过FileProvider将该文件或者数据库通过Uri发送至目标。一般适用于不同进程,比如分离进程的UI和后台服务,或不同的App之间。之所以采用FileProvider是因为7.0以后,对分享本App文件存在着严格的权限检查。

二、通过设置静态类中的静态变量进行数据交换。一般适用于同一进程内,这样本质上数据在内存中只存在一份,通过静态类进行传递。需要注意的是进行数据校对,以防多线程Data Racer出现导致的数据显示混乱。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,595评论 25 708
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,554评论 0 17
  • 1.什么是Activity?问的不太多,说点有深度的 四大组件之一,一般的,一个用户交互界面对应一个activit...
    JoonyLee阅读 5,764评论 2 51
  • 請原諒我昨天的少不更事 我用了一天反思 明天,我還是少不更事 白之羽
    白之羽阅读 199评论 0 0
  • 当确定终于可以无需和某些人联系的时候,心里一阵轻松,即使只是单方面的。 很多感情对我来说都是负担,过于频繁的联系在...
    王少一阅读 422评论 0 2