类的主内容:
public class EnableDelayUtil { private static Handler handler = new Handler(); private static ArrayList<Runnable> myRunnableList = new ArrayList<>(); private static ArrayList<View> viewList = new ArrayList<>(); public static void setDelayed(final View v) { // handler=new Handler(); final Runnable myRunnable = new Runnable() { @Override public void run() { // TODO Auto-generated method stub v.setEnabled(true); viewList.remove(v); myRunnableList.remove(this); } }; myRunnableList.add(myRunnable); viewList.add(v); v.setEnabled(false); handler.postDelayed(myRunnable, 2000); } public static void remove() { if (!myRunnableList.isEmpty()) { for (Runnable myRunnable : myRunnableList) { if (myRunnable != null) { handler.removeCallbacks(myRunnable); } } myRunnableList.clear(); } } }
使用方法:
在需要防止重复点击的地方调用
EnableDelayUtil.setDelayed(view) ,
然后在所处activity的结束处调用EnableDelayUtil.remove()即可。