1

我正在为学校的工作制作 Android Jabber 聊天客户端。

到目前为止一切正常。但是当我改变手机的方向时,它会重新连接到服务器。

重新连接只需要 3-5 秒,但在此期间如果我发送消息,则会导致NullPointerExceptionwhich 是XMPPConnection变量。

通过谷歌搜索,我发现我可以使用onRetainNonConfigurationInstance,但我的ChatClient类扩展Fragment并且它不可用。

我的目标是 4.0.3+,所以我不需要担心兼容性支持等问题。

static除了使用变量之外的任何解决方案?

谢谢

4

1 回答 1

1

我不确定在片段中托管您的 xmppconnection 是一个好主意。

一种常见的方法是将其托管在服务中,这样即使应用程序在后台(并且在任何情况下不依赖于您的活动/片段重新创建),您的连接也可以持续存在,或者,如果您对连接它不感兴趣当您的应用程序处于后台时,另一个不错的选择是将 xmppconnection 托管在单例对象中。

另一方面,如果这是一个学校项目,而您想要的只是片段随配置更改(例如旋转)保持不变,则可以使用 setRetainInstance方法:

控制是否在 Activity 重新创建期间(例如从配置更改)保留片段实例。这只能与不在后台堆栈中的片段一起使用。

于 2012-12-16T09:00:20.673 回答