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

时间:2015-02-20 04:35:51

标签: java android java-ee android-button android-networking

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

3 个答案:

答案 0 :(得分:1)

  

如果用户在同一按钮上多次单击该应用程序   在Android

中变得无法响应

要避免应用程序在按钮单击时无响应:

1。在按钮上显示ProgressBar,并在收到服务器响应后将其关闭。

2。使用AsyncTask从后台线程中的服务器获取数据,因为如果我们将网络相关代码放在主线程上,那么应用程序将无响应,直到响应未从服务器返回

3。当服务器请求正在进行时,通过显示“正在进行中......”等正确的消息来处理按钮单击。

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

boolean isTaskRunning=false;
在开始AsyncTask检查isTaskRunning状态:

之前单击按钮

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

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