android countdown 按钮,android – 在物理后退按钮上取消CountDownTimer按下片段

这篇博客探讨了在Android应用中,当用户点击物理后退按钮时如何正确停止CountDownTimer。作者遇到了在onPause,onStop,onDestroyView和onDestroy中调用CountDownTimer的cancel()方法无效的问题。他们尝试在多个生命周期回调中取消计时器,并在按钮点击事件中也调用了cancel(),但问题依然存在。博客寻求解决方案,希望找到一个有效的方法在Fragment的生命周期中正确处理CountDownTimer的停止。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在片段中使用CountDownTimer并尝试在用户点击手机中的物理后退按钮时停止它.我已经尝试重写onPause,onDestroy,onStop,onDestroyView但似乎没有任何工作.有点迷失在这里.有人可以给我一个指针吗?

public class Foo extends Fragment {

CountDownTimer myTimer;

@Override

public void onStop() {

super.onStop();

myTimer.cancel();

}

@Override

public void onPause() {

super.onPause();

myTimer.cancel();

}

@Override

public void onDestroyView() {

super.onDestroyView();

myTimer.cancel();

}

@Override

public void onDestroy() {

super.onDestroy();

myTimer.cancel();

}

@OnClick(R.id.btn_greenleft_no)

public void goBack() {

myTimer.cancel();

Objects.requireNonNull(getActivity()).onBackPressed();

}

@OnClick(R.id.btn_greenright_yes)

public void showSuccess(View view) {

markAll();

myTimer.cancel();

(new MusicPlayer()).playSound(getContext(), "cheers.mp3");

final Snackbar snackbar = Snackbar.make(snackBarView, R.string.congratulations, Snackbar.LENGTH_SHORT);

snackbar.show();

myTimer.cancel();

}

private void startTimer(final View view) {

int Seconds = 5;

myTimer = new CountDownTimer(Seconds * 1000 + 1000, 1000) {

public void onTick(long millisUntilFinished) {

String rem = String.valueOf(millisUntilFinished / 1000);

Log.d("APP_DEBUG", "Timer: " + rem);

}

public void onFinish() {

goBack();

}

}.start();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值