java - 如果多次单击按钮,应用程序会挂起
问题描述
我的 android 活动中有以下按钮。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(b1.isChecked())
if(b2.isChecked())
if(name1.getText().length()!=0 && name2.getText().length()!=0)
calculatelove();
}
});
单击它会调用以下函数
private void calculatelove()
{
findViewById(R.id.resultLayout).setVisibility(LinearLayout.VISIBLE);
btn.setEnabled(false);
new Thread(new Runnable() {
@Override
public void run() {
final Random rand = new Random();
runOnUiThread(new Runnable() {
@Override
public void run() {
tv_finger1.setText(name1.getText().toString().toUpperCase());
tv_finger2.setText(name2.getText().toString().toUpperCase());
}
});
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
progress = (((float) (i + 1) / 5) * 100);
progressBar.setProgress((int) progress);
Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setInterpolator(new DecelerateInterpolator()); //add this
fadeIn.setDuration(500);
tv_heart2.startAnimation(fadeIn);
tv_progress.setText("Please wait....." + (int) progress + "%");
}
tv_progress.setText("Complete");
tv_progress.setTextColor(Color.rgb(92,184,92));
tv_heart2.setBackgroundResource(R.drawable.heart);
tv_heart2.setText(rand.nextInt(100) + "%");
runOnUiThread(new Runnable() {
@Override
public void run() {
btn.setEnabled(true);
}
});
}
}).start();
}
它工作正常,但应用程序挂起,如果我们多次点击按钮。提前致谢 。
如果有人能找出原因。
解决方案
推荐阅读
- uwp - 将 IME 设置为日语时,不会为 TextBox 触发 KeyDown 事件?
- kubernetes - 暴露 Kubernetes 入口的最佳方法?
- html - 选择元素的文本对齐在 IE 中不起作用
- typescript - 在angular6中使用rest api进行语言翻译而不是i18n
- java - 在 producer.send 期间获得 ProducerFencedException 的原因是什么?
- android - 如何在没有相同数据的情况下在微调器内显示来自 firebase 的数据以进行过滤方法?
- jquery - 更改 jQuery val() 函数的值后更新 Angular4 模型
- push-notification - Onesignal 推送通知无法在 iOS 上显示号码消息
- linux - 两个文件的嵌套循环
- mysql - SQL如何从内部连接中获取最大值行