我正在构建一个Android应用,其中用户需要选择一个昵称。现在,两个用户不能使用相同的昵称。我在.net上看到过一些表单,在这些表单中,我们可以验证特定用户名的可用性,同时用户使用Ajax调用键入或按Tab。
我的问题是-是否可用于Android。我可以即时查询服务器并验证昵称是否可用。
非常感谢您的回复。如果需要查看任何教程,示例或Android文档参考,请指导我。
您 可以 在每次按键事件中使用当前输入的用户名查询服务器的用户数据库,以获取指定的输入组件(EditText等),但这可能会占用大量网络资源,并且会产生大量线程来处理:
EditText
TextWatcher
onTextChanged
CharSequence
要么…
当应用启动时(必须在选择名称之前),请与服务器的数据库联系,并向应用发送响应,其中包含已使用的名称列表。
这样,您可以轻松检查名称是否在电话上本地使用,而不用发送检查请求。
您仍然必须始终先检查昵称的可用性,然后再将其保存在服务器端
编辑:我已经实现了#2,这似乎是大多数应用程序为注册唯一名称所做的工作(我见过)
#1的问题- 用户输入1个字母(网络线程已启动)-用户输入另一个字母(另一个线程已启动)-用户输入了第3个字母(另一个线程)-线程2首先完成,名称有效,已通知用户- 线程1完成,名称无效,通知用户-线程3完成,名称无效,通知用户
线程2花费了4秒线程1花费了5秒线程3花费了5秒
假设用户不断输入25个字母,那么您必须跟踪很多术语,例如名称是否有效,是否以及哪些线程仍在运行等
对于这样一个简单的注册任务,这种方法似乎有点乏味,太麻烦了
#3的问题-需要向服务器发送1个额外的网络请求
我喜欢这种方法,因为您可以轻松快速地通知用户是否可以使用他们的姓名,而无需任何线程处理(取决于您的用户列表的大小),也不必担心检查需要多长时间
数字2很简单,容易,并且有机会只需要1个服务器请求