Android中使⽤Bundle传递⼤容量数据问题
在Activity或者组件之前传递信息时,⼀般采⽤intent绑定bundle的⽅式传值,在使⽤过程中需要注意的是不要⽤bundle 传递⼤容量数据:
在做项⽬的过程中,发现使⽤bundle在两个Activity之间传递数据的时候,有时候第⼆个Activity根本就显⽰不出来,刚开始以为是第⼆个Activity的布局出了问题,可怎么调整也发现解决不了问题,然后注释掉了⼀个往bundle⾥put数据的代码,发现⽴即正常了,经过分析发现是由于bundle不能传递⼤容量的数据信息,在stackoverflow⾥⾯查阅发现有同⾏遇到类似的问题:
(1)“The size limit of Intent is still pretty low in Jelly Bean, which is somewhat lower than 1MB (around 90K), so you should always be cautious about your data length, even if your application targets only latest Android versions.”
(2)“As per my experience (sometime ago), you are able to put up to 1MB of data in a Bundleencapsulated inside Intent. I think, this restriction was valid up till Froyo or GingerBread.”
所以在通过bundle传递数据时只能传递较⼩的数据信息,对于在不同组件之间需要传递⼤容量数据的情况时,有⼏种替代⽅式可以解决不能⽤bundle传递这些数据的问题:
⽅法⼀:将需要传递的数据写在临时⽂件或者数据库中,再跳转到另外⼀个组件的时候再去读取这些数据信息,这种处理⽅式会由于读写⽂件较为耗时导致程序运⾏效率较低;
⽅法⼆:将需要传递的数据信息封装在⼀个静态的类中(注意当前组件和要跳转到的组件必须属于同⼀个进程,因为进程之间才能够共享数据),在当前组件中为类设置内容,然后再跳转到的组件中去取,这种处理⽅式效率很⾼,但是会破坏程序的独⽴性。
具体采⽤哪种替代⽅式取决于具体的情况,我⽐较喜欢采取第⼆种处理⽅式,因为这样会⼤⼤提⾼程序的运⾏效率,⾄于程序的独⽴性,看你怎么去封装这个类了。安卓intent用法
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论