gpt4 book ai didi

java - 如何使实例在我的 Android 应用程序中的任何位置可用或可访问

转载 作者:行者123 更新时间:2023-11-29 06:56:10 25 4
gpt4 key购买 nike

我是 android 新手,我有一个问题。

我想在我的整个 android 程序中只有一个类的实例,这样它的属性在程序期间不会改变,但我也想在我的所有 Activity 中调用它的方法。

通过一些搜索,我意识到我可以通过将类实现为 Serializable 或 Parcelable 来传递我的对象。我这样做了,但出现以下错误:

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object
java.io.NotSerializableException: microsoft.aspnet.signalr.client.hubs.HubConnection

如您所见,我的类属性之一是 HubConnection,它位于 microsoft 包中,但我无法将其序列化。

如何将 SignalR 类的对象传递给另一个 Activity ?我有哪些选择?

public class SignalR implements Serializable {

private HubConnection connection;
private HubProxy proxy;

//some methods
}

最佳答案

如果您希望在整个应用程序中只有一个 YourCustomClass 实例,您可以通过在 YourApplication 类中保留自定义类对象的引用来实现。

创建一个类并将其扩展到Application类(class)。在您的应用程序类中创建 setter 和 getter 方法以访问您的自定义类实例。现在,您可以从应用程序中的任何位置访问您的自定义类实例,而不必在 Activity 之间传递实例。

public class YourApplicationClass extends Application{
private YourCustomClass yourCustomClass;

public YourCustomClass getYourCustomClass() {
if (yourCustomClass == null) {
yourCustomClass = new YourCustomClass();
}
return yourCustomClass;
}

public void setYourCustomClass(YourCustomClass yourCustomClass) {
this.yourCustomClass = yourCustomClass;
}

}

不要忘记将 android:name="YourApplicationClass"放入您的 list 文件中。

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

现在要从您的 Activity 访问对象,比如 MainActivity,您可以编写如下内容 -

@override
protected void onCreate(Bundle savedInstanceState) {
YourApplicationClass app = (YourApplicationClass) getApplication();
YourCustomClass yourCustomInstance = app.getYourCustomClass();
}

关于java - 如何使实例在我的 Android 应用程序中的任何位置可用或可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33665671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com