2010-12-20 80 views
1

我正在构建一个Android应用,用户需要在其中选择一个昵称。现在,两个用户不能有相同的昵称。我在.net上看到过表单,我们可以验证特定用户名的可用性,同时用户使用Ajax调用键入或按下标签。Android - 用户名可用性的Ajax风格自动检查

我的问题是 - 是什么类似的Android可用。我可以即时查询我的服务器并验证昵称的可用性吗?

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

回答

3

查询与指定的输入组件(EditText等),每个按键事件当前输入的用户名用户的服务器的数据库,但可能是相当大量网络资源,催生了大量的线程来处理:

  1. 添加TextWatcher您输入EditText或任何用户正在输入他的名字进入
  2. onTextChanged方法,你会生成一个线程来联系你的数据库沿CharSequence值发送。来自服务器的响应会输出一些JSON,可能带有一个布尔属性,它表示用户名是否可用
  3. 用户点击“确定”并且希望他们的名字为自己注册。最后的检查需要做出他们真正得到这个绰号之前,由于可用性可能已在上(比如说一吨的人正在注册一次全部)

或...

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

或...

,当你的应用程序启动(他们必须选择一个名字吧)之前,请联系您的服务器的数据库,并发送该应用程序是一个响应,其中包含已经拍摄的名称列表。

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

仍然必须总是正确的保存它在服务器端之前检查绰号的可用性

编辑: 我实现了#2,这似乎是这就是大多数应用程序做注册一个独特的名称(即我见过)

问题#1 - 用户在1个字母输入(网线开始) - 用户enteres另一封信(另一个线程启动) - 用户进入第三个字母(另一个线程) - 线程2首先完成,名称有效,用户被通知 - 线程1个饰面,名称是无效的,则通知用户 - 线3个饰面,名称是无效的,则通知用户

螺纹2花4秒 线程1花5秒 线3把5秒

说用户一直输入25个字母,有很多你必须跟踪的名称是否有效,如果和什么线程仍在运行等方面等

这种方法似乎有点太乏味乏味这么简单的注册任务,太麻烦了

问题#3 - 需要1个额外的网络请求

我喜欢这种方法,因为你可以轻松快速地通知用户,如果他们的名字可没有任何线程的服务器(取决于你的用户列表是如何变大)或担心它会花多长时间检查

2号简单,易行,并且可以有只需要1台服务器的请求

+0

非常感谢你的答案的机会。你几乎列出了我所有的选择。你对第一个是对的。这是一个非常网络密集的网站。但出于第二和第三,哪一个更好。你有没有实现过这种功能。如果是,请您详细说明性能问题。再次感谢。 – SaKet 2010-12-20 22:20:42