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

2023-11-30

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

我的问题是 - Android 上有类似的东西吗?我可以即时查询我的服务器并验证昵称的可用性吗?

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


you could使用当前输入的用户名在指定输入组件的每个按键事件上查询服务器的用户数据库(EditText等),但这可能是相当网络密集型的,并产生大量线程来处理:

  1. add a TextWatcher根据您的输入EditText或用户输入他的名字的任何内容
  2. in the onTextChanged方法,您将生成一个线程来联系您的数据库发送CharSequence价值。服务器的响应会输出一些 JSON,可能带有一个布尔属性,表示用户名是否可用
  3. 用户点击“确定”并希望他们的名字被自己注册。在他们真正获得这个昵称之前需要进行最后的检查,因为可用性可能已经改变(比如说很多人同时注册)

or...

  1. 让用户输入他们想要的名字
  2. 让他们点击“保存”或“注册”
  3. 此时,如果他们的名字可用,请发送注册数据并将其保存在数据库中。否则,让用户知道情况并非如此,他们必须重试

or...

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

这样,您可以轻松检查该名称是否是在手机上本地获取的,而不是发送检查请求。

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

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

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

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

假设用户连续输入 25 个字母,那么您必须跟踪很多内容,例如名称是否有效、线程是否仍在运行以及哪些线程仍在运行等。

对于这么简单的注册任务来说,这种方法似乎有点太繁琐了,太麻烦了

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android - Ajax 风格自动检查用户名可用性 的相关文章

  • 在包“android”中找不到属性“backgroundTint”的资源标识符

    我发现了一些视图 xml 属性 例如backgroundTint backgroundTintMode 但是当我使用它作为视图属性定义时 Eclipse 显示错误 No resource identifier found for attri
  • CardView 圆角获得意想不到的白色

    When using rounded corner in CardView shows a white border in rounded area which is mostly visible in dark environment F
  • 无法获取log.d或输出Robolectrict + gradle

    有没有人能够将 System out 或 Log d 跟踪从 robolectric 测试输出到 gradle 控制台 我在用Robolectric Gradle 测试插件 https github com robolectric robo
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • 当文本输入聚焦在 React Native for Android 的底部工作表上时,视图移出屏幕

    我正在使用图书馆 https github com osdnk react native reanimated bottom sheet https github com osdnk react native reanimated bott
  • Ajax 调用诸如 'for (;;); 之类的响应是什么? { json 数据 }' 是什么意思? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么人们会写这样的代码 throw 1 和 for 在 json 响应前面 https stackoverflow com questions 3146798 why do people put c
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 发布android后更改应用内购买项目的价格

    在 Google Play 上发布后 是否可以更改应用内购买商品的价格 我假设该应用程序也已发布 完整的在线文档位于http developer android com http developer android com也http sup
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • Android向menuItem添加子菜单,addSubMenu()在哪里?

    我想根据我的参数以编程方式将 OptionsMenu 内的子菜单添加到 menuItem 中 我检查了android sdk中的 MenuItem 没有addSubMenu 方法 尽管你可以找到 hasSubMenu 和 getSubMen
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL

随机推荐

  • android BlutoothChatService 在多个类中使用

    我使用 BluetoothChat 示例来建立蓝牙通信 我现在创建了 SecondView java 我想从那里发送和接收数据 而无需重新连接到蓝牙 有没有办法将BluetoothChat java示例中使用的发送和接收方法访问到我的Sec
  • 带有服务器时间PHP的Javascript时钟[重复]

    这个问题在这里已经有答案了 我在服务器时间上苦苦挣扎 我的网站上需要计时器 每秒计数 但不是客户端时间而是服务器时间 但我的脚本仅在客户端时间运行
  • Asp.net 将 DLL 重新安装到 GAC 中

    我正在尝试在 GAC 中重新安装 DLL 一切似乎都工作正常 但访问它的 Web 应用程序似乎仍在使用旧的 旧的 DLL 与新的 DLL 版本相同 仅进行了较小的编辑 它将被 50 个不同的站点使用 因此更改版本然后更改 web confi
  • PHP 与 ASP.net 的使用 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 有多少人因为 PHP 的开
  • ReactJS 内容没有填满整个页面,仅占据可用高度的 3/4

    正如您所看到的 即使高度属性为 100 包含粒子和 Home 组件的 div 也仅使用了 3 4 的高度 我渲染组件是否错误 我应该怎么做才能让组件填满整个页面 我认为问题出在 ParticlesComponent 上 因为由于某种原因它没
  • 从角度控制器发送带有文本框的多个图像数据

    我想将带有文本框值的多个图像数据发送到服务器端 PHP 我已经完成了多个图像上传 但在提交表单时无法将我的数据发送到服务器端 我的查看代码如下
  • R 中的 NLS 和对数周期幂律 (LPPL)

    这是迄今为止我在 R 中做过的最具挑战性的事情 因为 nls 和 LPPL 对我来说都是相当新的 以下是我一直在使用的脚本的一部分 df 是一个由两列组成的数据框 Date 和 Y 它们是 S P 500 的收盘价 我不确定它是否相关 但日
  • 如何在移动网络中从 navigator.getUserMedia() 获取对象?

    尝试获取 JavaScript 引用 承诺媒体流从返回媒体设备在 HTML5 和 WebRTC 中 这里的 JavaScript 是在 iOS 和 Android 上的 Chrome 和 Safari 上运行的 navigator medi
  • 为什么静态变量需要显式定义?

    在课堂里 class foo public static int bar declaration of static data member int foo bar 0 definition of data member 我们必须显式定义静
  • Android - “SQLite.SQLiteConnection”的类型初始值设定项引发异常。 ---> System.DllNotFoundException: e_sqlite3

    在我们的 Xamarin Android 项目中 我们正在尝试从 sqlite net 切换到官方 sqlite net pcl 包 但是 在创建新的 SQLiteConnection 后进行此切换后 我收到以下异常 SQLite SQLi
  • 拦截 WM_CLOSE 进行清理操作

    我有一个外部应用程序调用我的应用程序 并应该在工作完成后结束它 该外部应用程序的日志声称它使用WM CLOSE在我的应用程序上 我怎样才能拦截WM CLOSE我的应用程序中的消息要执行一些清理操作吗 我试过at exit 并将其包装在一个类
  • Meteor Spacebars {{#if someCondition}} 在页面刷新时简要显示数据

    我尝试了几种不同的方法 它们的行为方式相同 请参阅下面的代码 我使用空格键 if 条件 并尝试使用帮助程序 来检查用户是否已登录 然后显示登录 注册链接 如果未登录 如果是 请将其隐藏 我注意到 在初始页面加载时 如果他们从不同的站点导航回
  • 两个其他日期之间的日期,不考虑年份

    我正在寻找类似的人here正在寻找 只有我想使用MySQL 下表是您在我的数据库中找到的内容 简化 id name first last 1 John 1020 0814 2 Ram 0827 0420 3 Jack 0506 0120 4
  • 为什么我无法更改工作表参考?

    首先 如果这个问题太明显 我提前道歉 我只是几年没有使用 VBA 和 Excel 而且在其他地方找不到我的问题的答案 我希望我的 VBA 程序从工作表 ReportData 中获取数据 并使用它在新工作表 Report 上创建一些数据透视表
  • PHP 和 shell_exec

    我有一个 PHP 网站 我想在后台执行一个很长的 Python 脚本 300 MB 内存和 100 秒 流程通信是通过数据库完成的 当Python脚本完成其工作时 它会更新数据库中的字段 然后网站根据Python脚本的结果呈现一些图形 我可
  • 如何在Java中创建Kafka ZKStringSerializer?

    在搜索如何通过 API 创建 Kafka 主题时 我在 Scala 中找到了这个示例 import kafka admin AdminUtils import kafka utils ZKStringSerializer import or
  • 使用 HTTPS 本地主机 SSL 证书保护 WebSocket (WSS)?

    我对整个 WebSocket 和 SSL 证书有点陌生 所以我在Android端创建了自己的WebSocket服务器 网站是客户端 我能够让它与常规 WebSocket 一起工作 ws 但 WebSocket 不安全 wss 因为它需要 S
  • Xcode、构建和 dylib

    我查看了一些相关问题 似乎无法为自己找到解决方案 基本上我在 Xcode 项目中使用 libmp3lame dylib lame 的安装过程生成了 dylib 并将其放置在 usr local lib 中 为了让 Xcode 构建并运行该项
  • 使用nzload加载特殊字符

    我在 Oracle 表数据中扩展了 ascii 字符 我可以使用带有 转义字符前缀的 sqlplus 将其提取到文件中 我想使用 nzload 将完全相同的数据加载到 netezza 表中 nzload 在遇到此 char seq c2bf
  • Android - Ajax 风格自动检查用户名可用性

    我正在构建一个 Android 应用程序 其中要求用户选择昵称 现在 两个用户不能有相同的昵称 我在 net 上看到过表单 当用户使用 Ajax 调用键入或按 Tab 时 我们可以验证特定用户名的可用性 我的问题是 Android 上有类似