SharedPreferencesを使用して、ユーザーの一種の「セッション」を管理し、SharedPreferencesからすべてを削除するときに、ユーザーが明示的にログアウトを押すまでログインしたままにします。
ユーザーがログインするとき、私はこれを行います:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( LoginActivity.this);
prefs.edit()
.putString("first_name", firstName)
.putString("last_name", lastName)
.putString("email", email)
.putString("user_id", user_id)
.commit();
それは90%の時間機能していますが、多くの場合、このようなものはSharedPreferencesに書き込まれず、ユーザーがシステムによってログインしていると見なされることはありません。
なぜそれが起こるのか、何か考えはありますか?一部の電話のセキュリティの問題ですか?
注:データをデータベースに実際に追加した後にリモートサーバーが応答したときに、これらの値をSystemPreferencesに入れました。データがデータベースに追加されても、一部のデバイスでは値が保存されません。
これは、設定を取得するためのコードです。
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( ProblemioActivity.this);
String firstName = prefs.getString( "first_name", null); // First arg is name and second is if not found.
String lastName = prefs.getString( "last_name", null); // First arg is name and second is if not found.
String email = prefs.getString( "email", null); // First arg is name and second is if not found.
String user_id = prefs.getString( "user_id", null ); // First arg is name and second is if not found.
ありがとう!!