私のアプリケーションでは、PHPWebサーバーを使用しています。
メインアクティビティでは、ユーザー名とパスワードを使用してサーバーに接続します。これらの値を取得して、サーバーはセッションを開始します。
したがって、セッションを維持するために、アプリケーション全体で同じHTTPクライアントを使用します。
public static HttpClient httpclient = new DefaultHttpClient();
しかし、問題は、ほとんどの場合、サーバーからデータをフェッチする場合、バックグラウンドスレッドを使用してデータを取得し、UIスレッドを更新することです。したがって、クライアントがバックグラウンドで割り当てられ、ユーザーがUIのボタンをクリックして別の接続を確立しようとした場合。それは私にこの例外を与えます
Invalid use of SingleClientConnManager: connection still allocated.
この例外をキャッチしているので、アプリケーションはクラッシュしませんが、セッションは破棄されます。したがって、一部のビューに「Null」が表示されることになります。
誰かが私にセッションをより良い方法で維持する方法とこのSingleClientConnManager例外を回避する方法を手伝ってもらえますか?
ありがとうございました
私はこのアプローチを考えました:
アプリケーションがクラッシュするか、singleClientConnManager例外が発生した場合(いずれの場合もセッションが失われます)java.lang.Thread.UncaughtExceptionHandler
、共有設定を使用して保存されたユーザー名とパスワードを使用してサーバーに再度接続し(これによりセッションが再開されます)、現在のアクティビティ。私はこれを試しませんでしたが、それが良い習慣であるか知りたいですか?