2012-12-07 68 views
0

作爲一名Android開發人員,我是否負責處理用戶快速反覆篡改按鈕的情況?或者這被認爲是用戶濫用?從後端的數據角度看,沒有什麼不好的事情發生。我是否負責快速/反覆點擊按鈕?

我有一個按鈕,當選擇了一個服務器調用。一旦服務器響應,就會從返回的消息中產生一個活動(使用處理程序)。在某些情況下,如果用戶重複地揉動按鈕,重複活動可以開始堆疊並且可能導致不良用戶體驗(即用戶可能需要多次點擊後退按鈕以返回到前一個屏幕)

編輯: 我遺漏了一些細節。在等待服務器響應時,正在顯示一個 spinner 對話框。這攔截了所有的點擊。問題在於,在某些情況下,解散微調者和開始新活動之間的時間足夠讓用戶點擊更多次數。

現在我正在禁用按鈕,但它好像 有點破解 可能有更好的解決方案。

+0

這將是更適合於http://ux.stackexchange.com/ –

+0

你可以爲特定的時間量禁用按鈕,因此不允許「用戶濫用」 。 – jnthnjns

+0

定義'用戶濫用'?根據您自己的經驗,似乎您已經意識到您有責任確保只有在相關時纔會向用戶提供交互。 – njzk2

回答

6

我是否負責處理用戶快速反覆搓揉按鈕的情況?

通常是的。

或者被認爲是用戶濫用?

用戶的意見是重要的,用戶可能不認爲這是「濫用」你的應用程序。

服務器響應後,將從返回的消息(使用處理程序)生成一個活動。我

不要像這樣的延遲後開始活動,特別是因爲服務器可能永遠不會迴應。

在某些情況下,如果用戶反覆搗爛按鈕,重複的活動可以開始堆積並且可以使一個糟糕的用戶體驗(即用戶可能需要多次點擊後退按鈕返回到前一個畫面)

因此,換句話說,您的用戶界面導致用戶感到沮喪。解決方案是編寫一個更好的用戶界面。

+0

已更新,以澄清一些事情 – loeschg

+0

@loeschg:「現在我禁用了按鈕,但它看起來有點破解」 - 好吧,網站/應用程序可以做到這一點,所以它不是*哈希。但是,在調用'setEnabled(false)'和生效時間之間仍有一段時間,因此您仍然可能會收到一些點擊事件。 – CommonsWare

+0

就禁用評論達成一致。也許「黑客」是一個糟糕的選擇。延遲調用setEnabled(false)是否真的足夠重要,點擊事件將被註冊?我沒有看到這種情況。此外,你是否介意擴大「寫一個更好的用戶界面」的評論? – loeschg

1

簡單的解決方案btn.setEnabled(false)第一次按下後。需要時重新啓用。

至於你的問題有云:

作爲Android開發者,我是負責處理情況 其中用戶快速,反覆搗爛一個按鈕?

我會說不,我相信用戶足夠聰明,意識到如果他們濫用應用程序,它可能無法按預期執行。儘管你可以明顯地使用自己的技術來緩解這個問題,但是如果你願意的話。

+0

謝謝!我更新了我的問題,而且我現在正在執行此操作。給你+1,但我希望找到一個「更清潔」的解決方案。 – loeschg

5

當您開始一個需要很長時間才能執行的操作時,最好顯示一個ProgressDialog,然後在任務完成時關閉它。

private ProgressDialog mProgressDialog; 

... 

mProgressDialog = new ProgressDialog(context); 
mProgressDialog.setIndeterminate(true); 
mProgressDialog.setMessage("Loading..."); 
mProgressDialog.show(); 

... 

mProgressDialog.dismiss(); 
+0

謝謝!我正在使用對話框來指示服務器進度。查看我的編輯。 – loeschg

1

取決於你的意圖是什麼。您是否在整個運行過程中禁止點擊兩次?或者你想禁止快速點擊它。

在第一種情況下,只需在第一次點擊後使用myButton.setEnabled(false);禁用該按鈕。

如果要在一段時間內禁用它,請在OnClick上使用if和else。將此與等待功能結合起來。

喜歡的東西:

public void Sleeper() { 
    myButton.setEnabled(false); 
    wait(time); 
    myButton.setEnabled(true): 
}