5

ここに画像の説明を入力私は Android アプリの開発に慣れていません。小さな問題があります。私の Android アプリケーションで作業していると、突然「ホーム」ボタンが押されて、しばらくするとバックグラウンドになり、「ホーム」に移動してアプリ アイコンをクリックします。これの代わりに最初の画面私は最後に表示されたアクティビティを保持しており、「セッションがタイムアウトしたため、2 つの EditText ボックスでボックスを再度ログに記録してください」のようなメッセージを表示する必要があります。これを達成するために。

前もって感謝します..

4

4 に答える 4

3

Android ではシンプルです。維持する必要がありますSharedPreferences

これを読んで、概念をよりよく理解してください。

これは次のように機能します

 ==> when ever you are trying to maintain login concept save user name in the sharedpreference.
 ==> once data is edited in prefernces.xml , the data in it can be check in any Activity.

たとえば、ユーザー名、パスワード、およびセッション ID を保存するには、次のことができます。

 SharedPreferences pref = myContexy.getSharedPreferences("Session Data", MODE_PRIVATE);
 SharedPreferences.Editor edit = pref.edit();
 edit.putString("User Name", username);
 edit.putString("Password", password);
 edit.putInt("Session ID", session_id);
 edit.commit();

そしてそれらを手に入れます

 SharedPreferences pref = myContexy.getSharedPreferences("Session Data", MODE_PRIVATE);
 username = pref.getString("User Name", "");
 password = pref.getString("Password", "");
 session_id = pref.getInt("Session ID", 0);
于 2012-07-25T10:33:11.407 に答える
2

SharedPreferences間違いなく進むべき道ですが、タイムアウトの詳細については次のとおりです。

  • 現在のタイムスタンプをonPause()(-> SharedPreferences)に保存します
  • 次に、それをonResume()比較して、タイムアウトを確認します

タイムアウトしなかった場合は続行するか、そうでない場合はその素敵な画面を表示し、ログアウトするか、デバイスを自己破壊するか、その場合は何でもしたいことをしてください:-)

また、より高いレベルで処理するために、ある種のセッション マネージャー クラスを実装することを検討することもできます

于 2014-04-22T12:44:28.747 に答える
1

アクティビティのライフサイクルの説明については、次の図を参照してください: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

アクティビティの適切なメソッドをオーバーライドして、いつフォーカスを失った/回復したかを追跡します。

于 2012-07-25T10:05:56.243 に答える
0

ユーザーのログイン セッションを維持したい場合は、すべてのアクティビティで設定を行う代わりに、これを行うためにハンドラーを配置できます。

  1. ユーザーのログイン後にハンドラーを作成する
  2. sendMessageAtTime(Message, long) を設定します。long はミリ秒値です。これにより、定義されたログアウト関数が呼び出されます。
于 2015-06-27T12:02:39.980 に答える