Android-Ajax风格的用户名可用性自动检查

Android-Ajax风格的用户名可用性自动检查,android,ajax,Android,Ajax,我正在构建一个Android应用程序,其中要求用户选择昵称。现在,两个用户不能有相同的昵称。我见过.net上的表单,在那里我们可以在用户使用Ajax调用键入或按tab键时验证特定用户名的可用性 我的问题是,Android上是否有类似的功能。我可以动态查询我的服务器并验证是否有昵称 非常感谢您的回复。如果我需要查看任何教程、示例或Android文档参考,请指导我。您可以在每次按键事件中使用当前输入的用户名查询服务器的用户数据库,以获取指定的输入组件(EditText等),但这可能是相当密集的网络,

我正在构建一个Android应用程序,其中要求用户选择昵称。现在,两个用户不能有相同的昵称。我见过.net上的表单,在那里我们可以在用户使用Ajax调用键入或按tab键时验证特定用户名的可用性

我的问题是,Android上是否有类似的功能。我可以动态查询我的服务器并验证是否有昵称

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

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

  • TextWatcher
    添加到您的输入
    EditText
    或用户正在输入其姓名的任何内容中
  • onTextChanged
    方法中,您将生成一个线程,通过
    CharSequence
    值与数据库联系。服务器的响应将输出一些JSON,可能带有一个布尔属性,表示用户名是否可用
  • 用户点击“ok”并希望自己的名字被注册。在他们真正获得这个昵称之前,需要进行最后一次检查,因为从那以后,可用性可能已经发生了变化(比如说,大量的人同时注册了这个昵称)
  • 或者

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

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

    这样,您就可以轻松地检查手机上的姓名是否在本地录制,而无需发送检查请求

    在将昵称保存到服务器端之前,您必须始终检查其可用性

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

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

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

    假设用户持续键入25个字母,那么您需要跟踪很多内容,例如名称是否有效,线程是否仍在运行,以及哪些线程仍在运行,等等

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

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

    我喜欢这种方法,因为如果用户的名字可用,您可以轻松快速地通知用户,而无需任何线程(取决于您的用户列表有多大)或担心检查需要多长时间


    第二个简单易行,只需要一个服务器请求即可

    非常感谢您的回答。你几乎列出了我所有的选择。关于第一个,你是对的。这是一个相当密集的网络。但在第二和第三个选项中,哪一个更好。您是否实现过此类功能。如果是,请详细说明性能问题。再次感谢。