2010-12-20 53 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