2012-12-16 24 views
1

我正在爲學校的工作制作Android Jabber聊天客戶端。在Fragment類中更改方向時保留數據

到目前爲止一切正常。但是當我改變手機的方向時,它會重新連接到服務器。

重新連接只需要3-5秒,但在此期間如果我發送消息,將導致NullPointerException這是XMPPConnection變量。

通過谷歌搜索,我發現我可以使用onRetainNonConfigurationInstance,但我的ChatClient類擴展Fragment,它不可用。

我的目標是4.0.3+,所以我不需要擔心兼容性支持等。

除了使用static變量以外的任何解決方案?

感謝

回答

1

我不知道,舉辦片段裏面你xmppconnection是一個好主意。

一種常用的方法是將它託管在service之內,這樣即使應用程序在後臺(並且在任何情況下都不依賴於您的活動/片段重新創建),您的連接仍然可以保留,或者,如果您不感興趣在你的應用程序處於後臺時連接它,另一個不錯的選擇是將xmppconnection託管在單例對象中。

如果,另一方面,這是一所學校的項目和所有你想要的是片段沿着配置更改,如旋轉堅持,你可以使用 setRetainInstance方法:

控制是否片段實例保留在活動重新創建(如從配置更改)。這隻能用於不在後端堆棧中的碎片。

+0

感謝您的回覆。 「服務」看起來不錯。但是我需要從頭開始嗎?現在我有兩個類:ChatClient擴展'Fragment'並實現'PacketListener',然後ChatConnection擴展'AsyncTask'來請求連接。 – hrsetyono

+1

這就是爲什麼我寫了關於setRetainInstance的原因。這意味着以一種可以包含在服務中的方式重寫與xmpp的接口。我擔心的另一件事情是,如果它是一個真正的世界項目,是否在ui線程中處理xmppconnection,或者如果您正在使用的庫是在其自己的線程中實現的。 – fedepaol

+0

謝謝,我會嘗試使用'服務'。 – hrsetyono

相關問題