TimeEvent.java 1.5 KB
package com.cnlive.strike.util;

import android.util.SparseArray;

/**
 * Created by xiansong on 2017/9/12.
 */

public class TimeEvent {

    private static final int default_id = -1;
    private static final long default_event_time = 1_000;

    private static SparseArray<Long> event_time_map = new SparseArray<>();
    private static SparseArray<Long> current_time_map = new SparseArray<>();

    /**
     * 默认事件ID 限制操作 1秒
     */
    public static boolean debounce() {
        return debounceId(default_id, default_event_time);
    }

    /**
     * 默认事件ID 限制操作 自定义限制时长
     *
     * @param interval 限制时间
     */
    public static boolean debounce(long interval) {
        return debounceId(default_id, interval);
    }

    /**
     * 指定事件ID 限制操作 1秒
     *
     * @param event_id 事件ID
     */
    public static boolean debounceId(int event_id) {
        return debounceId(event_id, default_event_time);
    }

    /**
     * 指定事件ID 限制操作 自定义限制时长
     *
     * @param event_id 事件ID
     * @param interval 限制时间
     * @return
     */
    public static boolean debounceId(int event_id, long interval) {
        if (current_time_map.get(event_id, (long) 0) + event_time_map.get(event_id, (long) 0) < System.currentTimeMillis()) {
            event_time_map.put(event_id, interval);
            current_time_map.put(event_id, System.currentTimeMillis());
            return false;
        } else return true;
    }

}