2010-12-20 8 views
1

Я создаю приложение для Android, в котором пользователь должен выбрать ник. Теперь у двух пользователей не может быть такого же имени. Я видел формы на .net, где мы можем проверить доступность определенного имени пользователя, когда пользователь вводит или нажимает вкладку, используя вызовы Ajax.Android - Автоматическая проверка имени пользователя Ajax на наличие имени пользователя

Мои вопросы - это все, что доступно для Android. Могу ли я запросить мой сервер на лету и проверить наличие псевдонима.

Большое спасибо за ваши ответы. Если есть какие-либо учебники, образцы или ссылки на Android-документы, мне нужно посмотреть, пожалуйста, направьте меня на это.

ответ

3

вы могли запрос к базе данных вашего сервера пользователей с введенным в настоящее время пользователя на каждом нажатие клавиши события для указанного компонента ввода (EditText и т.д.), но это может быть довольно сеть интенсивной и нерест много потоков для обработки:

  1. добавить TextWatcher к введенному EditText или любой другой пользователь вводит свое имя в
  2. в методе onTextChanged, вы породит поток связаться база данных отправки по значению CharSequence. ответ с вашего сервера выдаст некоторый JSON, возможно, с логическим свойством, которое говорит, если имя пользователя доступно или нет.
  3. пользователь нажимает «ok» и ожидает, что их имя будет зарегистрировано для себя. окончательная проверка должна быть сделана прежде, чем они на самом деле получить это прозвище, так как наличие может быть изменено, так как (скажем, тонна людей регистрирует все сразу)

или ...

  1. Пусть введите имя пользователя
  2. позвольте им нажать «сохранить» или «зарегистрировать»
  3. на этом этапе отправьте регистрационные данные и сохраните их в базе данных, если их имя доступно. в противном случае, чтобы пользователь знал, что это не так и они должны попробовать еще раз

или ...

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

Таким образом, вы можете легко проверить, берется ли имя локально на телефоне, а затем отправляется запрос на проверку.

вы все равно должны всегда проверять наличие прозвища перед его сохранением на стороне сервера

редактировать: Я реализовал # 2, что кажется, что это то, что большинство приложений сделать для регистрации уникального имя (что ив видел)

проблемы с # 1 - пользователь вводит в 1 письме (сетевой поток запущен) - пользователя enteres другой буквы (другой поток запущен) - пользователь вводит 3-ю букву (другой поток) - thread 2 заканчивается первым, имя верно, пользователь получит уведомление - резьба 1 отделки, имя недействительно, пользователь получает уведомление - нить 3 отделки, имя недействительно, пользователь получает уведомление

нити 2 заняло 4 секунду нить 1 заняла 5 секунды нити 3 заняла 5 секунд

говорят, что пользователь продолжает печатать по 25 буквам, есть много вопросов, которые вы должны отслеживать в терминах, если имя действительно или нет, если и какие потоки все еще работают, и т. Д.

этот подход кажется слишком утомительным для такая простая задача регистрации, слишком много хлопот

проблема с # 3 - требуется 1 дополнительный сетевой запрос к серверу

Мне нравится этот подход, потому что вы можете легко и быстро уведомить пользователя, если его имя доступно без потоковой передачи (в зависимости от того, насколько велик ваш список пользователей) или заботясь о том, как долго он будет принимать для проверки

номер 2 является простым, легким, и может иметь возможность только требовать запросу 1 SERVER

+0

спасибо большое за ваш ответ. Вы почти перечисляете весь выбор, который у меня есть. Вы правы в первом. Это довольно интенсивная сеть. Но из второго и третьего из них лучше. Вы когда-либо реализовывали такую ​​функциональность. Если да, можете ли вы подробнее рассказать о проблеме производительности. Еще раз спасибо. – SaKet

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