0

私のアプリには、ログインとログアウトのメカニズムがあります。ユーザーがログアウトボタンを押したときにタスクスタックをクリアして、アプリケーションを再度起動したときに再度ログインする必要があるようにしたい. オンラインで調べたところ、ほとんどの場合、人々はこれを使用してそれを達成していました。

Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
finish();

このコードでは、次のことが起こります。

ホーム - >ログインアクティビティ(メインランチャーアクティビティ)[ユーザー名とパスワードのフィールドは空白です] - >ログアウトをクリックしたとき - >ホーム、そして私がこれを行うとき:

ホームから->アプリを起動します(ログイン画面にユーザー名とパスワードがまだ表示されています)->戻るボタンを押してホームに移動します->アプリを再度起動します->ユーザー名とパスワードをクリアします

ログアウト機能を記述するより良い方法は何でしょうか?

4

2 に答える 2

0

ユーザー名とパスワードを共有設定データベースに保存できます。ユーザーがログアウトすると、同じキーのデータベースから値がクリアされます。

ユーザーがログアウトせずにアプリを直接終了する場合は、ユーザー名とパスワードが既に存在するかどうかを確認して、それらを edittext に表示できます。

データベースに保存する

    SharedPreferences settings = getSharedPreferences("DB_NAME", 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putString("user", username);
    editor.putString("pass", password);
    editor.commit(); 

データベースからクリアする

    SharedPreferences settings = getSharedPreferences("DB_NAME", 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.remove("user");
    editor.remove("pass");
    editor.clear();
    editor.commit();
于 2012-04-23T04:30:55.073 に答える
0

Application クラスをオーバーライドし、パブリック フィールド (または getter/setter を使用してプライベート) を作成します。

アプリケーション クラス:

public boolean loginDialogShown = false;

ログインダイアログのコード:

MyApplication.loginDialogShown = true;

活動中:

if (!MyApplication.loginDialogShown){ loginDialog.show(); }

http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/

于 2012-04-23T07:02:40.037 に答える