当多次点击按钮时,应用程序变得无响应

when button is clicked many times, application becomes un-responsive

我正在开发一个 android 应用程序,其中有一个按钮用于从服务器获取数据并显示到 TextView, 但问题是,如果用户在同一个按钮上单击多次,应用程序在 Android 中变得无响应

尝试使用 AsyncTask。它可能会解决您的问题。一次从服务器发送和接收数据时,应用程序可能会变得无响应。

if a user is clicking many times on a same button the application becomes un-responsive in Android

为避免应用程序在单击按钮时变得无响应:

1. 单击按钮时显示进度条,并在收到服务器响应后将其关闭。

2. 使用 AsyncTask 在后台线程中从服务器获取数据,因为如果我们将网络相关代码放在主线程上,那么应用程序将变得无响应,直到响应不是 return 来自服务器

3. 当服务器请求已经在进行时,通过显示 "In progress...".

这样的正确消息来处理按钮点击

使用布尔变量处理点击事件:

boolean isTaskRunning=false;

在开始前单击按钮 AsyncTask 检查 isTaskRunning 状态:

   if(!isTaskRunning){
       isTaskRunning=true;
       // start task for getting data from server

    }else{
         //... In progress...
    }

从服务器获取数据后将 isTaskRunning 变量设为 false

您如何从服务器获取数据。如果您使用的是 Thread 或 AsyncTask,那很好。当用户单击您的按钮时,禁用您的按钮,然后启动线程或 AsyncTask 从服务器获取数据。收到数据后将其填充到文本视图中并启用按钮。

//disable click event
b.setClickable(false);

// enable click event
b.setClickable(true);

如果您在主线程上获取数据,那么您的应用可能会变得无响应并抛出 ANR。