当多次点击按钮时,应用程序变得无响应
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。
我正在开发一个 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。