Я начал писать клиент для сайта.
Сначала нужно авторизоваться. А после можно пользоваться сайтом.
Я решил, что нужно использовать сессию, чтобы не авторизовываться каждый раз.
Как можно сохранять сессию даже после закрытия приложения?
Какие классы использовать для этого?
Есть два варианта простой и сложный но они оба связаны с использованием SharedPreferences
:
Простой - вы записываете в памяти устройства что пользователь был удачно залогинен, например будет переменная hasVisited
. При удачном входе (пароль и логин верны) вы записываете в память устройства что переменная имеет значение true
:
sp = getSharedPreferences("app_data", 0)
val editor = sp!!.edit()
editor.putBoolean("hasVisited", true)
editor.apply()
и дальше в активности с которой стартует приложение мы проверяем эту переменную в функции onCreate
:
val hasVisited: Boolean = sp!!.getBoolean("hasVisited", false)
if (hasVisited) {
// переменная равно true и значит можно например через интент перейти на следующий экран
} else {
// переменная равна false и значит нужно ввести пароль и логин для авторизации
}
вот вариант на java:
в активности в методе onCreate
нужно записать так:
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
дальше при авторизации вам нужно будет класть переменную в память устройства:
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putBoolean("hasVisited", true).commit;
Второй способ: Создаем класс для работы с настройками приложения:
public class Session {
private SharedPreferences prefs;
public Session(Context cntx) {
// TODO Auto-generated constructor stub
prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
}
public void setusename(String usename) {
prefs.edit().putString("usename", usename).commit();
}
public String getusename() {
String usename = prefs.getString("usename","");
return usename;
}
}
и дальше в активности его используем:
private Session session;//global variable
session = new Session(cntx); //in oncreate
//and now we set sharedpreference then use this like
session.setusename("USERNAME");
и дальше можно после сохранения пароля и логина их оттуда взять, например так:
session.getusename();
так же я вот есть приблизительный вариант функции выхода из аккаунта:
public void logout(View view){
SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.clear();
editor.commit();
}
оба способа приблизительно одинаковы по исполнению, просто второй немного более запарный на мой взгляд. Надеюсь поможет :)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нужно чтобы при клике в браузере на слова "просто", "средне", "сложно" в div с классом result вставлялось значение + значение дата атрибутаСейчас...
Почему false? И как мне найти объект, если их будет много? Причем в Set() и Map() тоже самоеЕсли добавлять вместо объектов примитивные типы - то true