LogoutTimerManager.java 2.66 KB
package com.sw.laryngoscope.manager;

import static com.sw.laryngoscope.common.Constant.INACTIVITY_LOGOUT_TIME_NEVER;
import static com.sw.laryngoscope.common.Constant.INACTIVITY_LOGOUT_VALUE;

import com.sw.laryngoscope.activity.CustomTimer;
import com.sw.laryngoscope.utils.Logger;

/**
 * @Description
 * @Author
 * @Time 2019/09/09
 */
public class LogoutTimerManager implements CustomTimer.TimerCallBack {

    private static LogoutTimerManager instance;

    private LogoutCallBack mLogoutCallBack;

    public static LogoutTimerManager getInstance() {
        if (instance == null) {
            synchronized (LogoutTimerManager.class) {
                if (instance == null) {
                    instance = new LogoutTimerManager();
                }
            }
        }
        return instance;
    }

    public interface LogoutCallBack {
        void onTime(long lastTime, String tag);
    }

    public void setCallback(LogoutCallBack callback) {
        this.mLogoutCallBack = callback;
    }

    private CustomTimer logoutTimer;
    private final String logoutTAG = "logoutTimer";

    public synchronized void startLogoutTimer() {
        if (SpManager.get_inactivity_logout_time()
                != INACTIVITY_LOGOUT_TIME_NEVER
                && AccountManager.getInstance().isLogin()) {
            Logger.d(" startLogoutTimer ===================");
            if (logoutTimer == null) {
                logoutTimer = new CustomTimer();
                logoutTimer.setTag(logoutTAG);
            }
            logoutTimer.closeTimer();
            logoutTimer.setTag(logoutTAG);

            logoutTimer.startTimer(INACTIVITY_LOGOUT_VALUE[SpManager.get_inactivity_logout_time()], this);
            //reSetLogoutTime();
        }/* else {
            stopLogoutTimer();
        }*/
    }

    public synchronized void stopLogoutTimer() {
        if (logoutTimer != null) {
            Logger.d(" stopLogoutTimer ===================");
            logoutTimer.closeTimer();
            logoutTimer = null;
        }
    }

    public void reSetLogoutTime() {
        if (logoutTimer != null) {
            logoutTimer.setmAllTime(0L);
        }
    }

    @Override
    public synchronized void timerComply(long lastTime, String tag) {
        if (tag.equals(logoutTAG)) {
            if ( SpManager.get_inactivity_logout_time()
                    != INACTIVITY_LOGOUT_TIME_NEVER && mLogoutCallBack != null ) {
                mLogoutCallBack.onTime(lastTime, tag);
                stopLogoutTimer();
                Logger.d(" timerComply ===================");
            }
            return;
        }
    }

}