退出活动后禁用CountDownTimer

时间:2018-06-30 11:09:46

标签: android

我有一个CountDownTimer实例,该实例在recyclerView适配器类中初始化。倒数到零后,我创建一个alertDialog。我想停止/禁用计时器,如果我按下“后退”按钮并保留绑定适配器的片段所在的活动。

不幸的是,我无法检查适配器中的当前活动,如果我退出而没有取消计时器,则随着上下文的更改,我的应用程序将崩溃。

离开活动后如何立即取消呢?

3 个答案:

答案 0 :(得分:1)

重写onBackPressed()并在Timer上调用cancel()方法。这样...

@Override 
public void onBackPressed() {
    mTimer.cancel() // Call cancel on timer instance
}

此外,如果您想在看不到活动时停止计时器,则可以在活动/片段的onPause()中调用cancel方法。

答案 1 :(得分:0)

计时器到期后,请检查Activity是否仍在运行此代码段:

if ( context instanceof Activity ) {
    Activity activity = (Activity)context;
    if ( activity.isFinishing() ) {
        return;
    }
}

显然,如果context已死,请不要使用Activity

答案 2 :(得分:0)

这里有很多选择,其中一个是recyclerView.Adapter类中的onDetachedFromRecyclerView()方法  重写此方法,并通知ViewHolder停止countDownTimer,以通知视图所有者您可以让他们监听诸如stopTimer()之类的事件,并且可以调用此方法来停止计时器!在您要为recyclerView设置适配器的活动中,重写onPause或onStop方法并添加此代码recyclerView.setAdapter(null);,这将触发onDetachedFromRecyclerView()方法,并使countDownTimer停止,您也可以检查view.getContext()==null在您的countDownTimer中,如果上下文为null,则意味着上下文已更改