Android 将复杂对象传递给活动

Android 将复杂对象传递给活动,android,android-activity,Android,Android Activity,我正在使用蓝牙应用程序,我有一个线程来监听输入消息,还有两个活动:主菜单和蓝牙控制台。我正在菜单活动中建立连接,然后我需要将一些对象传递给console活动: 使用其write()方法的线程引用 主要活动的上下文 最后我需要检查一个布尔值 我读过关于使用Intent.putExtra和传递可序列化的o可分配类对象的内容。我用我需要传递的对象编写了一个类,但我不知道怎么做,甚至不知道可序列化和可分组意味着什么 难道没有任何简单的方法可以将这些对象从一个活动传递到另一个活动吗 简而言之。不可以。

我正在使用蓝牙应用程序,我有一个线程来监听输入消息,还有两个活动:主菜单和蓝牙控制台。我正在菜单活动中建立连接,然后我需要将一些对象传递给console活动:

  • 使用其write()方法的线程引用
  • 主要活动的上下文
  • 最后我需要检查一个布尔值
我读过关于使用Intent.putExtra和传递可序列化的o可分配类对象的内容。我用我需要传递的对象编写了一个类,但我不知道怎么做,甚至不知道可序列化和可分组意味着什么


难道没有任何简单的方法可以将这些对象从一个活动传递到另一个活动吗

简而言之。不可以。活动是相互隔离的,因为它们可以跨越流程,所以唯一的可移植选项是序列化它们。但您可以使用诸如Flexjson之类的库,使用Intent.putExtra()跨多个应用程序序列化普通的Java bean。比用包裹手写序列化要简单得多。退房:

Android中存在一个bug,您必须执行以下操作:

/** Fix for Android bug http://code.google.com/p/android/issues/detail?id=5697 */
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());

您可以扩展
应用程序
,并将共享对象放入该类中。比如:

public class MyApplication extends Application {
    private boolean myBoolean;

    public boolean getMyBoolean() { return myBoolean; }
}
你可以在这里放置任何你想使用全局变量的东西

要将应用程序的应用程序设置为MyAPplication,请使用AndroidManifest.xml

<application ... android:name=".MyApplication">


活动有自己的上下文,因此您无需传递该上下文。getApplicationContext()为True。但我仍然需要访问该线程方法和布尔函数。我花了一段时间才理解它与清单中的alreade是同一个应用程序标记,并且没有使用其中的两个。它工作得很好:)