我是android的新手,我有一个问题。
我希望在整个android程序中只有一个类的实例,以便在程序执行期间它的属性不会改变,但我也想在我的所有活动中都将其称为方法。
通过一些搜索,我意识到可以通过将类实现为Serializable或Parcelable来传递对象。我这样做了,但出现以下错误:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object
java.io.NotSerializableException: microsoft.aspnet.signalr.client.hubs.HubConnection
如您所见,我的类属性之一HubConnection
是在Microsoft程序包中,我无法使其序列化。
如何将SignalR类的对象传递给其他活动?我有什么选择?
public class SignalR implements Serializable {
private HubConnection connection;
private HubProxy proxy;
//some methods
}
如果要在整个应用程序中使用YourCustomClass的单个实例,则可以通过在YourApplication类中保留对自定义类对象的引用来实现。
创建一个类并将其扩展到Application类。在应用程序类中创建setter和getter方法以访问您的自定义类实例。现在,您可以从应用程序内的任何位置访问您的自定义类实例,而不必在活动之间传递实例。
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 ”。
<application
......
android:name=".YourApplicationClass"
....... >
现在要从您的活动中访问对象,说MainActivity,您将编写如下内容:
@override
protected void onCreate(Bundle savedInstanceState) {
YourApplicationClass app = (YourApplicationClass) getApplication();
YourCustomClass yourCustomInstance = app.getYourCustomClass();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句