3

サーバーと通信し、ログイン画面を持つアプリに取り組んでいます。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オブジェクトを作成していて、アプリを終了して再起動すると、新しいオブジェクトが再び作成されるためですか? または私の仮定が間違っています。

4

2 に答える 2

-1
If I move the Cookiemanager to the application class, it's just get called once and solve this issue. 

public class application extends Application {
    private static Context context;
    @Override
    public void onCreate() {
        super.onCreate();
            CookieManager cookieManager = new CookieManager();
            CookieHandler.setDefault(cookieManager);
    }

    public static Context getContext() {
        return application.context;
    }
于 2016-02-09T00:40:24.017 に答える