2011-07-25 6 views
2

私は自分のサーバーと通信するためにHttpClientを持っています。Androidでのアクティビティ間の永続セッションのベストプラクティスは何ですか?

これまで、サービスを使用して、HttpClientをバックアップしました。バックグラウンドスレッドを含めて、重い作業を行いました。

これを行うもう1つの方法は、ローカルファイル/ xml /データベースにCookieを保存し、存在する場合はそれを確認し、新しいHttpClientで使用して各アクティビティを作成します。

どちらが良いか、私が望むものを達成するためのより良い方法がありますか?

答えて

2

私は個人的にはクッキーと一緒に行きます。これを行うにはCookieが一般的に使用されます。 HttpClientは、ファイルをバックアップできるCookieStoreを受け入れます。クッキーが更新されると、ファイルを更新するだけで、ファイルを取得する必要がある場合は、メモリ内のコピーを使用するか、ファイルを読み取ります。ちょうどサービスであなたのセッションをどのようにバックアップするのか分かりません。サービスはある州をどこかで保存しなければならないだろう。 HttpClientをシリアライズすることは可能ではないようです。だから私はCookieStoreを実装するだけです。

CookieStore

+0

私は1つのセッションでのHttpClientインスタンスを永続化するサービスを利用することができ、それは、ログイン毎回を必要とするアプリケーションのための十分です。 – CarlLee

+0

私は混乱していると思いますが、サービスは永続していますか? HttpClientをディスクに書き込むことはできません。それとも、サービスをクライアントを保持するシングルトンとして機能させると言っていますか?もしそうなら、データを引き渡すことは面倒なことになるでしょう。そして、クッキーストアとメモリ内の共有場所を持つHttpClientを使用して、あなたのアクティビティを(おそらくあなたがそのルートに行った場合はApplicationオブジェクト内で)プルする必要があります。 –

+0

アプリケーションは、1つのセッション中に(異なるアクティビティであっても)閉じられません。したがって、HttpClientは、サービスオブジェクトがまだその参照を保持しているため、収集されません。私はそれを使用したいとき、私はIBinderを呼び出して、サービスオブジェクトのインスタンスを取得し、そこからHttpClientを取得します – CarlLee

関連する問題