2016-06-17 3 views
3

я использую SharedPreference, чтобы сохранить имя пользователя после пользователь входа мое приложение и ясно это, если пользователь выхода из системы.Данные были кэшируются в Android 6 (SharedPreferences)

Я буду проверять это значение, когда начать приложения, если это значение NULL пользователю необходим логина использовать. не

Однако, когда я проверяю с андроида 6.0:

Login (save username - Toast show not null) > Logout (remove username - Toast show null) > Remove App > Reinstall app > StartApp (not login - Toast show not null, this value is user that used => issue) 

Эта проблема не происходит с андроид < 6,0

Вот мой код:

INIT sharedpreference в заявке:

public static SharedPreferences getPref() { 
    return mInstance.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); 
} 

Проверьте логин:

if (App.getPref().getString("username", null) == null){ 
    //Login 
} 

Сохранить если Войти успех:

   App.getPref().edit() 
           .putString("username", s.getLoggedInUser().getUsername()) 
           .putString("profilePicUrl", s.getLoggedInUser().getProfilePicUrl()) 
           .putString("pk", s.getLoggedInUser().getPk()) 
           .apply(); 

Ясно, когда выход из системы:

App.getPref().edit().clear().apply(); 
+0

именно то, что ваша проблема? – Gaurav

+0

См. Строку 4 в моем вопросе со сценарием выпуска: после удаления приложения очистить sharepreference, переустановите приложение и прочитайте из данных sharepreference не null. – MsBao

+0

ok получил это из-за автоматических резервных копий, введенных в M – Gaurav

ответ

1

Это происходит из-за автоматическое резервное копирование. введенный в Зефир.

Это займет резервное копирование данных и будет использовать эту резервную копию во время переустановки.

Если вы хотите, чтобы отключить его от настройки -> Резервное копирование & сброс -> автоматическое восстановление

enter image description here

Но для вашего приложения я предлагаю сделать общий прив.

с ключом «имя пользователя» к нулю во время выхода из системы и совершить.

или просто сделать

android:allowBackup="false" в манифесте

+0

Привет, @Gaurav. Я не знаю режим резервного копирования в Android 6.0. Большое спасибо. – MsBao

+0

Привет @Gaurav, я обновляю свой код, но имя пользователя, которое было создано в резервном хранилище до того, как я изменил резервную копию на false, все еще автоматически восстанавливая. Как удалить автоматическое восстановление из моего кода. – MsBao

+0

oh, а затем присвоение «имени пользователя» нулевому значению в момент выхода из системы является единственным вариантом – Gaurav

 Смежные вопросы

  • Нет связанных вопросов^_^