Java 活动更改时,倒计时计时器不会停止

Java 活动更改时,倒计时计时器不会停止,java,android,eclipse,performance,countdowntimer,Java,Android,Eclipse,Performance,Countdowntimer,我用过一个有定时器功能的类。所以我可以随时重复使用这些代码。问题是,当我从一个活动移动到另一个活动时,计时器应该重置,但计时器无法完成,新的计时器将再次启动。这是我的密码 public class Utils { Context mContext; private static final String TAG = Utils.class.getSimpleName(); CountDownTimer mCountDownTimer = null; boolea

我用过一个有定时器功能的类。所以我可以随时重复使用这些代码。问题是,当我从一个活动移动到另一个活动时,计时器应该重置,但计时器无法完成,新的计时器将再次启动。这是我的密码

public class Utils {
    Context mContext;

    private static final String TAG = Utils.class.getSimpleName();
    CountDownTimer mCountDownTimer = null;
    boolean isRunning = false;
    private Activity activityContext;

    public Utils(Context context) {
        this.mContext = context;
        this.activityContext = (Activity) context;
    }

public void resetTimer() {

        if (isRunning) {
            Log.d(TAG, "Timer is stopping now..######");
            mCountDownTimer.cancel();
            mCountDownTimer = null;
            isRunning = false;
            startCountDownTimer();

        } else {
            Log.d(TAG, "Timer is starting now..######");
            startCountDownTimer();

        }

    }

    public void stopCountDownTimer() {

        if (mCountDownTimer != null) {

            mCountDownTimer.cancel();
            mCountDownTimer = null;

        }

    }

    public void startCountDownTimer() {

        mCountDownTimer = new CountDownTimer(10000, 1000) {

            public void onTick(long millisUntilFinished) {
                Log.d(TAG, "Timer is ticking..!!!!");

                isRunning = true;

            }

            public void onFinish() {
                Log.d(TAG, "Timer is finished..!!!!");
                isRunning = false;

                try {

                    Intent launchIntent = mContext.getPackageManager()
                            .getLaunchIntentForPackage("com.#########.###");
                    activityContext.startActivity(launchIntent);
                    activityContext.finish();
                    System.exit(0);

                } catch (Exception e) {
                    e.printStackTrace();
                }

            }

        }.start();

    }
}
在ActivityCreate方法中,我调用这个
resetTimer()
,但计时器不会重置。我还调用了
stopCountDownTimer()
,结果将是相同的。我错过了什么

已解决:

    public class Utils {
        Context mContext;

        private static final String TAG = Utils.class.getSimpleName();
        CountDownTimer mCountDownTimer = null;
        boolean isRunning = false;
        private Activity activityContext;

        private final long startTime = 10 * 1000;

        private final long interval = 1 * 1000;

        public Utils(Context context) {
            this.mContext = context;
            this.activityContext = (Activity) context;
            mCountDownTimer = new MyCountDownTimer(startTime, interval);
        }

    public void resetTimer() {

            if (isRunning) {
                Log.d(TAG, "Timer is stopping now..######");
                mCountDownTimer.cancel();
                mCountDownTimer = null;
                mCountDownTimer = new MyCountDownTimer(startTime, interval);
                isRunning = false;
                Log.d(TAG, "Timer is stopped amd starting again..######");
                mCountDownTimer.start();
                // startCountDownTimer();

            } else {
                Log.d(TAG, "Timer is starting now..######");
                // startCountDownTimer();
                mCountDownTimer.start();

            }

        }
    }
    public void stopCountDownTimer() {

        if (mCountDownTimer != null) {

            mCountDownTimer.cancel();
            mCountDownTimer = null;

        }

    }

    public class MyCountDownTimer extends CountDownTimer {
        public MyCountDownTimer(long startTime, long interval) {
            super(startTime, interval);
        }

        @Override
        public void onFinish() {
            Log.d(TAG, "Timer is finished..!!!!");
            isRunning = false;

            try {

                Intent launchIntent = mContext.getPackageManager()
                        .getLaunchIntentForPackage("com.####.####");
                activityContext.startActivity(launchIntent);
                activityContext.finish();
                System.exit(0);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onTick(long millisUntilFinished) {
            Log.d(TAG, "Timer is ticking..!!!!");

            //Toast.makeText(mContext, ""+millisUntilFinished/1000, 50).show();
            isRunning = true;

        }
    }

}

你是如何实例化你的Utils类的?您是如何确保它是单例的?onTick()和onFinish()的@Override注释在哪里?如果我使用CountDownTimer扩展任何类,那么Override方法将生成,但我只使用这个函数@Opiatefuchstry添加mCountDownTimer.cancel();mCountDownTimer=null;isRunning=false;进入onFinish()方法中。。。不要调用重置或停止倒计时的方法。我已经将函数改为类,现在它可以正常工作了。。谢谢@aditiparikh您是如何实例化您的Utils类的?您是如何确保它是单例的?onTick()和onFinish()的@Override注释在哪里?如果我使用CountDownTimer扩展任何类,那么Override方法将生成,但我只使用这个函数@Opiatefuchstry添加mCountDownTimer.cancel();mCountDownTimer=null;isRunning=false;进入onFinish()方法中。。。不要调用重置或停止倒计时的方法。我已经将函数改为类,现在它可以正常工作了。。谢谢@AditiParikh