`

教你一招:在多个Activity之间传递对象,不用Bundle,Intent.putExtra(转载)

阅读更多

在两个activity之间传递数据无非是用Bundle 和Intent.putExtra的重载方法。
不过Bundle貌似可以传递对象,前提是对象必须是可序列化的,序列化却会降低性能,传递的时候要把这个对象序列化,取对象的时候还要进行反序列化。

不知道大家知道不知道jsp,或者Servlet里面的Session,可以放入对象,也可以取对象。
按照这个原理,我写了个极简单的Session类用来保存对象,无论你跳转到哪个activity你都可以获取你之前放入的对象。
代码如下

  1. import java.util.HashMap;
  2. import java.util.Map; public class Session {

  3. @SuppressWarnings("unchecked")
  4. private Map _objectContainer;

  5. private static Session session;

  6. //Attention here, DO NOT USE keyword 'new' to create this object.
  7. //Instead, use getSession method.
  8. @SuppressWarnings("unchecked")
  9. private Session(){
  10.   _objectContainer = new HashMap();
  11. }

  12. public static Session getSession(){
  13.   
  14.   if(session == null){
  15.    session = new Session();
  16.    return session;
  17.   }else{
  18.    return session;
  19.   }
  20. }

  21. @SuppressWarnings("unchecked")
  22. public void put(Object key, Object value){

  23.   _objectContainer.put(key, value);
  24. }
  25. public Object get(Object key){
  26.   
  27.   return _objectContainer.get(key);
  28. }
  29. public void cleanUpSession(){
  30.   _objectContainer.clear();
  31. }
  32. public void remove(Object key){
  33.   _objectContainer.remove(key);
  34. }
  35. }
复制代码

再解释一下吧,这个类是个单例模式,要通过Session.getSession()拿到一个Session对象,得到Session后就可以放入对象了,别忘了用完后调用 remove方法或cleanUpSession方法,好让GC回收。
示例如下:
在一个Activity里使用如下代码放入对象
        Session session = Session.getSession();
        Date date = new Date();
        session.put("date", date);
在另外一个Activity里拿到对象
      Session session = Session.getSession();
      Date date = (Date)session.get("date");

至于拿到的是不是同一个对象,大家自己比较一下就行了。

欢迎大家提出意见!

分享到:
评论

相关推荐

    Android应用:Intent打开另外一个Activity,Intent拨电话,Intent在2个Activity间传递参数

    本教程将详细讲解如何使用Intent来实现特定的功能,包括打开新的Activity,拨打电话,以及在两个Activity之间传递参数。 首先,让我们讨论如何使用Intent打开另一个Activity。在Android中,Activity是用户界面的...

    通过Intent实现Activity之间的切换,并传递数据

    在Android应用开发中,Intent是一种强大的机制,用于在组件之间建立通信桥梁,特别是在Activity之间进行切换和数据传递。本文将详细讲解如何通过Intent实现Activity之间的切换,并探讨如何利用Intent进行数据传递。 ...

    两个Activity之间传递参数的代码

    本篇文章将详细讲解如何在Android的两个Activity之间传递参数,并通过给出的`LoginActivity.java`和`MainActivity.java`两个文件为例进行说明。 首先,我们要了解在Android中,有两种主要的方式来传递数据: 1. ...

    andorid 利用Intent 传递Bundle包

    在Android应用开发中,Intent是一种强大的机制,用于在组件之间传递数据和启动操作。Intent不仅可以用来启动新的Activity,还能启动Service、BroadcastReceiver等。在这个场景中,我们将关注Intent如何与Bundle结合...

    Android学习笔记(七):多个Activity和Intent.doc

    而Intent则是一种消息对象,用于在不同的组件之间(如Activity、Service)进行通信。本篇笔记将详细阐述如何处理多个Activity以及如何使用Intent进行数据传递。 首先,当我们需要在应用中使用多个Activity时,每个...

    Activity之间传递对象的Demo

    当我们需要在不同的Activity之间传递数据时,特别是涉及到对象实例的传递,就需要掌握特定的技巧。本篇将深入探讨如何在Android中进行Activity间的对象传递,并以"Test001"为例进行演示。 一、Intent:数据传递的...

    借助Intent实现Android工程中Activity之间Java对象的传递.zip

    总结,通过Intent在Android的Activity之间传递Java对象,开发者可以根据项目的具体需求选择适合的方法。Serializable接口简单易用但效率较低,Parcelable接口高效但编码复杂,Gson库提供了方便的JSON转换,而...

    Activity传递对象的3种方法(全)

    Parcelable是Android系统提供的一种高效的数据序列化方式,特别适合于Activity之间传递大量或复杂对象。首先,我们需要让我们的类实现Parcelable接口,并重写其中的`writeToParcel()`和`describeContents()`方法。...

    Activity传递数据到另一个Activity并显示

    本教程将详细讲解如何在`Activity`之间传递数据,包括使用`Intent`和`Bundle`来实现实现简单功能,这对于初学者来说非常实用。 ### 1. `Intent`的使用 `Intent`是安卓系统中的一个核心组件,它用于表示应用程序中...

    Activity之间传递数据

    "Activity之间传递数据"这一主题,主要涉及如何使用Intent对象在不同的Activity之间传递各种类型的数据,包括基本数据类型、字符串、数组、集合以及自定义对象等。在Android中,Intent不仅用于启动新的Activity,还...

    Android+多个activity之间互传信息

    本篇文章将深入探讨如何在多个Activity之间传递信息,特别是在Android Studio环境下。我们将主要关注两个关键点:Activity1向Activity2传递数据以及Activity2向Activity1回传数据。 一、Activity1向Activity2传递...

    Android 通过Intent使用Bundle传递对象详细介绍

    Android开发中有时需要在应用中或进程间传递对象,下面详细介绍Intent使用Bundle传递对象的方法。 被传递的对象需要先实现序列化,而序列化对象有两种方式:java.io.Serializable和android.os.Parcelable Java中...

    Android开发 两个Activity之间通过Intent跳转传值

    本文将深入探讨如何在两个Activity之间通过Intent进行数据传递。 首先,理解Intent的基本概念。Intent是一个意图对象,它表达了应用程序想要执行的动作(如打开一个网页、拨打电话)以及可能涉及到的数据。在...

    Activity数据传递案例代码

    在Ac­tiv­i­ty之间传递数据,主要通过Intent的putExtra()和getExtra()方法。例如,我们可以将基本数据类型(如字符串、整型、浮点型等)或Parcelable、Serializable接口实现的对象放入Intent中: ```java Intent...

    android开发中Intent在两个Activity间传值示例

    在这个“android开发中Intent在两个Activity间传值示例”中,我们将深入探讨如何使用Intent在两个Activity之间传递数据。 1. **Intent的基本概念** Intent是一个表示一个动作的意图对象,它包含了一个操作和操作的...

    Intent_Bundle_传参数

    - **数据复用**:Bundle对象可以在多个Intent间复用,只需将其添加到新的Intent即可。 - **Bundle与Parcelable的结合**:若一个类需要作为Parcelable传递,其成员变量也可以是另一个Parcelable类型的对象,这样...

    Intent传值Demo

    在Android应用开发中,Intent是连接各个组件(如Activity、...在"IntentPassDataDemo"这个项目中,你将会看到以上各种数据传递方式的示例代码,通过实践理解这些方法,可以更好地掌握Intent在Android开发中的运用。

    两个activity之间的数据传递

    在Android应用开发中,Activity是用户界面的基本单元,经常需要在不同的Activity之间传递数据。本教程将详细讲解如何在两个Activity之间实现数据传递,主要涉及三种常见方法:Intent的Extra数据、Bundle对象以及使用...

    android bundle和activity之间交换数据

    理解如何有效地在两者之间传递数据是提升Android开发技能的关键。 ### 1. Bundle对象的介绍 Bundle是一个键值对的数据结构,它类似于Java中的HashMap,可以存储各种基本数据类型(如int、String、boolean等)以及...

    利用广播Broadcast Receiver,在2个不同的Activity传递数据

    本教程将深入探讨如何利用BroadcastReceiver在两个不同的Activity之间传递数据。 首先,理解BroadcastReceiver的基本概念。BroadcastReceiver是Android系统中的一个监听器,它可以在后台运行,监听特定的Intent广播...

Global site tag (gtag.js) - Google Analytics