在Activity之间传递复杂类型
作者: Android开发网原创 时间: 2011-08-03
很多Android开发者对于Activity中如何传递复杂的类型不是很清楚,这里Android123再帮刚入门的开发者整理下。对于传递
一、实现Parcelable接口
对于Android来说传递复杂类型,主要是将自己的类转换为基础的字节数组,Activity之间传递数据是通过Intent实现的,对于二进制数据,传递的参数为putExtra(String name, Parcelable value) ,比如Bitmap类就实现了Parcelable接口,如果需要在Activity中传递图片,可以直接用Bitmap类型,当然如果本身是Drawable你可以先转化为Bitmap,可以参考 Bitmap和Drawable相互转换方法 一文。
相关的Intent方法还有
putExtra(String name, Parcelable[] value) // 传递一个Parcelable数组
putExtra(String name, Bundle value) //传递一个Bundle对象
putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value) //传递一个实现Parcelable接口的对象数组
putStringArrayListExtra(String name, ArrayList<String> value) //传递一个字符串数组
putIntegerArrayListExtra(String name, ArrayList<Integer> value) //传递一个整形数组。
这里Android开发网提示大家,Integer这些装箱类型,Intent还实现了 putExtra(String name, int[] value) 这样的基础类型数组,同时Parcelable效率比标准的Java序列化更高,同时还被用作在AIDL中交换数据,所以掌握Parcelable这样的显示序列化技术,可以大幅提高数据交换性能。
二、使用全局单例模式
由于Android中Activity传递主要靠Intent这个类,Intent类内部传递数据的效率仍然需要拷贝,如果数据量很大,还可以考虑使用Singleton Pattern单例模式定义一个全局的静态类,这样传递的效率最高,大家可以看下Java设计模式,了解其中的妙用。
三、实现Serializable接口
如果你学习过传统的Java,则可以通过串行化技术,实现Serializable接口,其实这个原理和Parcelable差不多,均将自己的类转换为基本的类型比如说字节数组。在Android中不是很实用,这里不再赘述,在Intent中使用Intent putExtra(String name, Serializable value) 这个方法即可。
分享到:
相关推荐
"Activity之间传递数据"这一主题,主要涉及如何使用Intent对象在不同的Activity之间传递各种类型的数据,包括基本数据类型、字符串、数组、集合以及自定义对象等。在Android中,Intent不仅用于启动新的Activity,还...
在Android应用开发中,Activity是用户界面的基本单元,经常需要在不同的Activity之间传递数据。本篇文章将详细讲解如何在Android的两个Activity之间传递参数,并通过给出的`LoginActivity.java`和`MainActivity.java...
当我们需要在两个Activity之间传递数据时,通常有多种方法,如Intent、Bundle、静态变量、文件、数据库等。本教程将聚焦于一种更为灵活的方式:通过接口进行数据传递。这种方式在某些复杂场景下特别有用,例如当数据...
本文将详细介绍Android中Activity之间数据传递的多种方式及其适用场景。 一、Intent传递数据 Intent是Android系统中用于启动组件(如Activity)的一种消息对象,同时也可以用来在组件间传递数据。Intent的数据传递...
首先,我们来理解为什么需要在Activity之间传递对象。在多Activity的应用中,可能需要在不同的Activity之间共享数据,这些数据可能是简单的基本类型,如字符串、整数,也可能是复杂的自定义对象。Android的Intent...
"Activity review activity之间的数据传递"这个主题聚焦于如何在不同的Activity之间有效地传递信息。理解并熟练掌握这一技能对于构建功能丰富的Android应用至关重要。 一、Intent:数据传递的主要工具 在Android中...
在Android应用开发中,Activity是用户界面的基本单元,经常需要在不同的Activity之间传递数据。本教程将详细讲解如何在两个Activity之间实现数据传递,主要涉及三种常见方法:Intent的Extra数据、Bundle对象以及使用...
本篇将深入探讨Fragment与Activity之间的数据传递,以及如何通过setArguments方法实现这一过程。 首先,了解Fragment的基本概念。Fragment具有自己的生命周期,可以有自己的布局,也可以处理用户事件。它可以在不同...
当需要在不同的Activity之间传递数据时,通常会用到Intent对象。然而,标准的Intent API并不直接支持传递大型数据集合,如List。本文将详细讨论如何在Android中实现Activity之间传递List数据。 首先,理解Intent的...
此外,Android的Binder机制也可以实现Activity间的通信,但这通常用于更复杂的场景,如服务与Activity之间的通信,或者跨进程通信。 在实际应用中,有时需要处理Activity的生命周期问题。例如,当从一个Activity...
在Android应用开发中,Intent是一种强大的机制,用于在组件之间建立通信桥梁,特别是在Activity之间进行切换和数据传递。本文将详细讲解如何通过Intent实现Activity之间的切换,并探讨如何利用Intent进行数据传递。 ...
通过Intent,我们可以轻松地在Activity之间交换数据,无论是简单的字符串还是复杂的自定义对象。同时,startActivityForResult提供了Activity间的双向通信,增强了交互体验。在实际开发中,应根据具体需求选择合适的...
在Activity之间传递数据库数据时,通常先读取数据到内存,然后通过Intent传递,或者在需要的时候再从数据库中查询。 了解了这些基础后,开发者可以根据实际需求选择合适的数据交互方式。在实际项目中,往往需要结合...
本教程将深入探讨如何在Android的Activity之间传递数据,以及如何在启动的Activity销毁后,主Activity能接收到返回的结果。 首先,我们要了解Activity间的启动模式。Android提供了四种启动模式:标准模式(Standard...
综上所述,Android中的序列化是两个Activity之间传递复杂数据的一种手段,而Intent则是连接这些Activity的桥梁。正确理解和使用序列化和Intent机制,可以帮助开发者有效地在不同Activity间共享信息,从而构建功能...
在两个Activity之间传递信息,我们通常会创建一个Intent对象,然后将数据附加到Intent上,最后通过startActivity()方法启动目标Activity。 1. 使用putExtra()方法传递基本数据类型: ```java Intent intent = new ...
Intent在Android系统中扮演着消息传递的角色,它能够启动新的Activity或Service,同时也可以用来在它们之间传递数据。在传递参数时,我们通常会创建一个Intent对象,并使用putExtra()方法添加键值对,键是字符串类型...
本篇文章将详细探讨如何在Android中通过Intent进行Activity之间的数据传递,以及使用Parcelable和Serializable这两种序列化方式来传递复杂的数据对象。 首先,Intent是Android系统中用于启动组件(如Activity、...
1. **创建接口**:首先,定义一个接口,通常放在Fragment类中,包含需要在Fragment和Activity之间传递的方法。 2. **实现接口**:然后,在Activity中实现这个接口。这样,当Fragment需要与Activity通信时,它可以...
本教程将深入探讨如何在两个Activity之间传递数据,特别是通过SeekBaar(滑动条)进行数据传输。首先,我们要理解Activity的启动模式以及Intent在数据传递中的角色。 1. **Activity启动模式**: - **Standard**:...