有时我们过快的点击按键就会出现应用无响应的问题(ANR),此时我们可以用如下方法:
方法1:
mBtnOk.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(Timecheck.isFastDoubleClick()){
Log.e(TAG, "click too fast");
return ;
}
..............
class Timecheck {
private static long lastClickTime;
public static boolean isFastDoubleClick() {
long time = System.currentTimeMillis();
long timeD = time - lastClickTime;
if ( 0 < timeD && timeD < 2000) {
return true;
}
lastClickTime = time;
return false;
}
}
方法2:
private staitc flag = true;
mBtnOk.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(falg){
flag = false;
.............//按键处理
flag = true;
}
方法3:我们可以在按键处理新起线程处理耗时较长的操作
mBtnOk.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
//To change body of implemented methods use File | Settings | File Templates.
}
});