Использовать базу данных для управления сессиями

Могу ли я использовать столбец в таблице, чтобы проверить, вошел ли пользователь в систему.

Когда пользователь входит в систему, я устанавливаю значение 1. Когда он выходит из системы, я устанавливаю значение 0. Я не хочу использовать SharedPreferences. Использует это так неэффективно.

Сначала я использовал общие настройки. Я устанавливаю имя пользователя в общих настройках вместе с другими настройками и отображаю имя пользователя в навигационном ящике. Когда я устанавливаю приложение на другое устройство, я думаю, что даже файл общих настроек будет установлен, и я увидел, что на новом устройстве имя пользователя отображается в файле общих настроек, хотя этот пользователь не существует в таблице в базе данных этого устройства.


person Abhi    schedule 09.02.2016    source источник


Ответы (2)


Когда пользователь входит в систему, я устанавливаю значение 1. Когда он выходит из системы, я устанавливаю значение 0

Здесь произойдет следующее: когда вы установите значения 0 или 1, вам придется открывать и закрывать базу данных каждый раз, и это будет хлопотно поддерживать. вы должны проверять это каждый раз, какой флаг. в то время как в SharedPreferences он будет глобально доступен и его будет легко установить флаг.

Я бы посоветовал вам использовать SharedPreferences, потому что

SharedPreferences — это хранилище ключей/значений, в котором вы можете сохранять данные под определенным ключом. Чтобы прочитать данные из хранилища, вы должны знать ключ данных. Это делает чтение данных очень простым. Но так же просто, как хранить небольшой объем данных, так же сложно хранить и читать большие структурированные данные, поскольку вам нужно определить ключ для каждого отдельного данных, кроме того, вы не можете действительно искать в данных, если у вас нет определенной концепции для называя ключи.

Чтобы привести пример, SharedPreferences полезны для хранения пользовательских настроек, где необходимо сохранить всего несколько переменных. SQLite, с другой стороны, был бы лучше для хранения данных, где есть большой набор элементов, таких как названия песен в музыкальной библиотеке, которые необходимо искать.

Проверьте SharedPreferences и SQLite.

person Amit Vaghela    schedule 09.02.2016
comment
Сначала я использовал общие настройки. Я устанавливаю имя пользователя в общих настройках вместе с другими настройками и отображаю имя пользователя в приложении навигационного ящика. Когда я устанавливаю приложение на другое устройство, я думаю, что даже файл общих настроек будет установлен, и я увидел, что на новом устройстве имя пользователя отображается в файле общих настроек, хотя этот пользователь не существует в таблице в базе данных этого устройства. - person Abhi; 09.02.2016
comment
вы должны поддерживать флаг в общих настройках. проверьте stackoverflow.com/a/35266669/2826147 - person Amit Vaghela; 09.02.2016
comment
да.. я знал это. Но что произошло, когда я установил приложение из студии Android на другом устройстве. Файл общих настроек, содержащий имя пользователя, которого я зарегистрировал на предыдущем устройстве, хранится на новом устройстве. Но этот пользователь не зарегистрирован в новом устройстве. В базе данных этого телефона нет сведений об этом пользователе, но имя пользователя все равно отображается в приложении. - person Abhi; 09.02.2016
comment
Возможно, этого не произойдет, если я буду использовать apk вместо установки из студии Android для установки ... или apk также будет содержать общие настройки ... я сам запутался. Вы понимаете, в чем моя проблема? - person Abhi; 09.02.2016
comment
попробуйте установить на другое устройство с помощью подписанного apk, и общего предпочтения не будет, но вам нужно очистить общее предпочтение, как указано в моем комментарии выше. - person Amit Vaghela; 09.02.2016
comment
у него будут разные имена пакетов, поэтому устройство изменится, поэтому оно будет удалено. - person Amit Vaghela; 09.02.2016

Лучше использовать общие настройки вместо использования базы данных для такой мелочи.

Обратитесь к этому: http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/

person user5716019    schedule 09.02.2016