小编典典

Android-Ajax样式自动检查用户名可用性

ajax

我正在构建一个Android应用,其中用户需要选择一个昵称。现在,两个用户不能使用相同的昵称。我在.net上看到过一些表单,在这些表单中,我们可以验证特定用户名的可用性,同时用户使用Ajax调用键入或按Tab。

我的问题是-是否可用于Android。我可以即时查询服务器并验证昵称是否可用。

非常感谢您的回复。如果需要查看任何教程,示例或Android文档参考,请指导我。


阅读 260

收藏
2020-07-26

共1个答案

小编典典

可以
在每次按键事件中使用当前输入的用户名查询服务器的用户数据库,以获取指定的输入组件(EditText等),但这可能会占用大量网络资源,并且会产生大量线程来处理:

  1. TextWatcher在您的输入中添加一个,EditText或在用户输入其名称的任何位置
  2. 在该onTextChanged方法中,您将生成一个线程来联系数据库,并发送该CharSequence值。服务器的响应将输出一些JSON,也许带有boolean属性,该属性说明用户名是否可用
  3. 用户点击“确定”,并希望自己注册自己的名字。由于他们的可用性可能已经发生了变化(例如,很多人一次注册全部),因此在他们实际获得此昵称之前,需要进行最终检查。

要么…

  1. 让用户输入所需的名称
  2. 让他们点击“保存”或“注册”
  3. 此时,请发送注册数据并将其保存在数据库中(如果名称可用)。否则,让用户知道不是,他们必须重试

要么…

当应用启动时(必须在选择名称之前),请与服务器的数据库联系,并向应用发送响应,其中包含已使用的名称列表。

这样,您可以轻松检查名称是否在电话上本地使用,而不用发送检查请求。

您仍然必须始终先检查昵称的可用性,然后再将其保存在服务器端

编辑:我已经实现了#2,这似乎是大多数应用程序为注册唯一名称所做的工作(我见过)

#1的问题-
用户输入1个字母(网络线程已启动)-用户输入另一个字母(另一个线程已启动)-用户输入了第3个字母(另一个线程)-线程2首先完成,名称有效,已通知用户-
线程1完成,名称无效,通知用户-线程3完成,名称无效,通知用户

线程2花费了4秒线程1花费了5秒线程3花费了5秒

假设用户不断输入25个字母,那么您必须跟踪很多术语,例如名称是否有效,是否以及哪些线程仍在运行等

对于这样一个简单的注册任务,这种方法似乎有点乏味,太麻烦了

#3的问题-需要向服务器发送1个额外的网络请求

我喜欢这种方法,因为您可以轻松快速地通知用户是否可以使用他们的姓名,而无需任何线程处理(取决于您的用户列表的大小),也不必担心检查需要多长时间

数字2很简单,容易,并且有机会只需要1个服务器请求

2020-07-26