深入理解Activity之间的数据传递
2013-05-23 09:43
501 查看
Activity之间是没有办法直接传递数据的。Android的设计原则是,用Intent在不同的Activity和进程之间进行通信,但是通常来讲,Intent中只能存入基本数据类型和系统默认支持的比如Uri之类的。那么对于用户自己定义的数据结构是无法直接用Intent来传送的,如果想要通过Intent来传递自定义数据,可以让数据结构实现Parcelable接口,这样就可以把数据放入Intent。但是Intent的传送效率也不是很高,特别是当传递一些如Bitmap的大数据,曾经在有一次遇到过,用Intent传递超过500K的Bitmap,就会造成Framework层的Java Binder挂掉,结果就是传递不成功。
这点可以算成是Android的一个弊端,没有很好的解决方案。能做到的就是尽量设计的时候注意,尽量让Activity之间共享基本数据类型。
Android本身的应用中也深受其害,可以看到有很多应用程序的源代码中的主要的类在三千行以上的不在少数,比如Browser中的BrowserActivity有四千多行;Mms中的ComposeMessageActivity也有四千多行。等等。为什么一个类会如此之大,就是因为它们是程序的主页面,是业务的核心逻辑所在,里面也控制着很多的其他的数据结构,而又无法与另外的Activity共享,所以就只能在一个Activity里面做所的事情。
另外,虽然不是很好的解决,但也还可以接受,就是对某些数据和逻辑类用单键模式,这样每个包内的类(包括Activity)都可以访问,比如Mms中的data包里面的WorkingMessage,Conversation,Contact和ContactList都是单键。
希望以后的SDK中能有比较好的解决方法。
您可能感兴趣的文章:
相关文章推荐
- 安卓开发-intent在Activity之间数据传递
- 使用Intent在activity之间传递数据
- 在不同activity之间数据传递
- EventBus,一个可以在Activity、Fragment、Service之间传递任意类型数据的事件总线框架
- 解析activity之间数据传递方法的详解
- Android activity 之间的数据传递 bundle
- Android 数据传递(一) Activity之间的数据传递
- Activity与Fragment数据传递之Fragment之间获取数据 分类: Android 2015-07-02 10:33 11人阅读 评论(0) 收藏
- Activity之间数据的简单传递
- 用Intent启动Activity,并在Activity之间传递数据
- Android中Activity和Fragment之间数据传递(例子中也有事务加载Fragment)
- activity之间的数据传递方法
- Android开发笔记---不同activity之间的数据传递
- activity与fragment之间传递数据
- 学习随记-Toast提示,两个Activity之间传递数据
- Android如何在Activity和Service之间传递数据
- Android学习备忘010——使用静态变量在Activity之间传递数据
- Android中activity之间传递数据的几种实现方法
- Android笔记Fragment与Activity之间传递数据
- 利用Bundle实现Activity之间的数据传递。