1

学校の仕事用に Android Jabber チャット クライアントを作成しています。

これまでのところ、すべて正常に動作しています。しかし、電話の向きを変更すると、サーバーに再接続されます。

再接続には 3 ~ 5 秒しかかかりませんでしたが、その間にメッセージを送信するNullPointerExceptionと、XMPPConnection変数が原因になります。

グーグルで、使用できることがわかりましたonRetainNonConfigurationInstanceが、ChatClientクラスが拡張され、使用Fragmentできません。

私のターゲットは 4.0.3+ なので、互換性サポートなどについて心配する必要はありません。

static変数を使用する以外の解決策はありますか?

ありがとう

4

1 に答える 1

1

フラグメント内で xmppconnection をホストすることが良い考えかどうかはわかりません。

一般的なアプローチは、サービス内でホストすることです。これにより、アプリケーションがバックグラウンドであっても接続を維持できます (いずれにしても、アクティビティやフラグメントの再生成に依存しません)。または、接続することに関心がない場合アプリがバックグラウンドにある場合、別の良いオプションは、xmppconnection をシングルトン オブジェクト内でホストすることです。

一方、これが学校のプロジェクトであり、ローテーションなどの構成変更に沿ってフラグメントを永続化するだけでよい場合は、 setRetainInstanceメソッドを使用できます。

アクティビティの再作成 (構成の変更など) の間、フラグメント インスタンスを保持するかどうかを制御します。これは、バック スタックにないフラグメントでのみ使用できます。

于 2012-12-16T09:00:20.673 に答える