在活动之间传递非序列化对象

时间:2012-03-15 09:26:10

标签: android android-activity

我有一个活动A,使用这个流与服务器端的会话:

socket = new Socket("10.0.2.2", 7777);
outStream = new ObjectOutputStream(socket.getOutputStream());
inStream = new ObjectInputStream(socket.getInputStream());

我正在启动活动B,其中我正在生成GeoPoint(未序列化) 现在我想将The GeoPoint发送到服务器。 我该怎么办?

我试过了:
1.使用Intent将GeoPoint返回到活动A.但它仅在活动B完成且我不想关闭Activiy B时起作用。
2.将outStream,inStream从Activity A发送到B,但它们没有被序列化。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

在这种情况下,您可能希望通过覆盖Application本身来使用全局变量。

例如:

public class MyOverridenApp extends Application {

    private static ObjectOutputStream outStream = null;
    private static ObjectInputStream inStream = null;

    public static void setOutStream(ObjectOutputStream outStream) {
        MyOverridenApp.outStream = outStream;
    }

    public static ObjectOutputStream getOutStream() {
        return MyOverridenApp.outStream;
    }
}

在活动中使用适当的调用来设置/获取流出。

请记住将其设置为清单中的应用程序:

<application androidName=".MyOverridenApp" android:icon="@drawable/icon" android:label="@string/app_name" >