1

こんにちは私は、アプリが破棄された後でも「ログイン」しているように見えるという厳格な要件を持つアプリを持っています。アプリが破棄された場合、後で再ロードされた(以前にログインした場合)ログイン画面は、ユーザーが以前に表示していたページに直接バイパスする必要があります。(私はすでにすべてのセッション関連の変数を処理しています)

使ってみましShared Preferencesたが、アプリを手動で破棄するとログイン画面に戻るので、これはできません。

設定を手動でDBに保存しようとしましたが(おそらくこれShared Preferencesはとにかく何をしますか?)、これが最初にロードされたアクティビティであるため、もちろんログインアクティビティがロードされます。したがって、この問題は、ユーザーが常に実行しているアクティビティの設定を維持してから、これに直接ロードする場合に発生しますonResume()

私の質問:誰かが以前にこの種のシナリオを扱ったことがありますか?アクティビティのプリロードにどのようにアプローチすればよいですか。ログイン画面で自分の設定をロードするときに、前のアクティビティ設定を確認して、それにロードするだけだと思っていました(ユーザーがログインしていると仮定します)。

これにアプローチするためのより良い方法はありますか?適切なアクティビティ開始に動的にロードするよりネイティブな方法はありますか?

どんな助けでも本当にありがたいです

編集:これを投稿した直後に、私が本当にしなければならなかったのは、適切なセッション変数が設定されているかどうかのチェックをOnResumeに追加することだけであることに気付きました。次に、実際にはAkbariが以下に示すように、アクティビティにロードします。Preferencesクラスをロールバックして、標準のAndroidを使用し、SharePreferences完全に機能するようになりました。それについて幸せです:)

単にこのようなことをする:

    // load preferences
    preferences.readPreferences();      

    // if preferences exist load straight to RecordActivity
    if (application.currentSessionId!=null) {
        Intent i = new Intent(getApplicationContext(), RecordActivity.class);
        startActivity(i);           
    }       
4

1 に答える 1

1

ログインステータスを設定に保存し、ログインアクティビティのonCreate()メソッドで確認できます

    @Override
    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);SharedPreferences prefs;
    prefs = getSharedPreferences("your_pref", MODE_PRIVATE);

    boolean login_status = prefs.getBoolean("login_status", false);
    if (login_status) {
        Log.v(LOG_TAG, "UserInfo>>User already logged in");
        Intent intent = new Intent(this, HomeActivity.class);
        startActivity(intent);
        this.finish();
    }
}

ここでは、ログインステータスを確認し、すでにログインしている場合はユーザーを次のアクティビティにリダイレクトします

于 2013-03-01T06:38:30.320 に答える