サーバーと通信し、ログイン画面を持つアプリに取り組んでいます。httpconnection を使用してサーバーと通信しています (サーバーは Json 応答を返します)。私のログイン画面は、サーバーによって検証される電子メールとパスワードを送信します-サーバーはCookieを送信し、ユーザーがログインしていることをさらに要求するたびにCookieを期待します.
Cookiemanager と Cookie ハンドラーを使用してセッションを有効にしているため、ユーザーは一度だけログインする必要があります。
メイン アクティビティで以下の 2 つのコマンドを使用する (Create メソッドで)
CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);
作業モデルは、私の主なアクティビティが読み取りコマンドをサーバーに送信し、ユーザーが既にログインしているかどうかを確認し (ID が内部にある Cookie を期待)、json でステータスを送信することです。status が 0 の場合はログイン アクティビティに、それ以外の場合はホーム画面に移動します。
ログインアクティビティでは、ユーザー名とパスワードを指定してログインコマンドを送信し、サーバーは json 応答で Cookie を送信します (一意の ID を送信し、それ以降の要求をクロスチェックしてユーザーを検証します)。
ログイン後、ホーム画面に移動してステータスを読み取り、メイン アクティビティで CookieManager を作成したため、httprequest ごとに Cookie が自動的に送信されます。
問題は、アプリケーションを終了してログイン後に戻ると、再びメイン アクティビティが開始され、ホーム画面ではなくログイン画面に移動することです。その理由と、ユーザーを一度ログインさせる方法がわかりません。その後、ユーザーがアプリを終了しても Cookie が保持されます。
終了後も CookieManager は Cookie を保持していると思いました。createメソッドでcookie Managerオブジェクトを作成していて、アプリを終了して再起動すると、新しいオブジェクトが再び作成されるためですか? または私の仮定が間違っています。