使用Java在Android Studio实现60秒倒计时的功能问题咨询
Android 60秒倒计时功能修复方案
核心修改说明
- 调整时间显示逻辑:删除原有分+秒的格式化规则,直接提取剩余秒数展示,补充+1逻辑保证倒计时从60开始而非59;如果需要显示两位秒数格式(如09、05),可将
String.format中的%d替换为%02d即可 - 新增结束跳转逻辑:在倒计时结束回调中添加页面跳转代码,跳转目标类可根据你的实际需求替换
- 优化计时器生命周期:将计时器改为全局成员变量,在onResume生命周期启动、onPause生命周期销毁,保证每次进入该Activity都会重新启动倒计时,同时避免内存泄漏
修改后的完整Java代码
public class BeginAfter extends AppCompatActivity { TextView textView; // 声明计时器为成员变量,方便生命周期管理 CountDownTimer countDownTimer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_begin_after); textView = findViewById(R.id.timer); } @Override protected void onResume() { super.onResume(); long duration = TimeUnit.MINUTES.toMillis(1); // 每次回到页面启动新的倒计时 countDownTimer = new CountDownTimer(duration, 1000){ @Override public void onTick(long l) { // 直接转换为秒,+1保证首次显示60 long remainSecond = TimeUnit.MILLISECONDS.toSeconds(l) + 1; String sDuration = String.format(Locale.ENGLISH,"%d", remainSecond); textView.setText(sDuration); } @Override public void onFinish() { textView.setVisibility(View.INVISIBLE); // 此处替换为你要跳转的目标Activity类即可 Intent intent = new Intent(BeginAfter.this, 你要跳转的目标类.class); startActivity(intent); // 如果不需要保留当前倒计时页面可取消下方注释,关闭当前页 // finish(); } }.start(); } @Override protected void onPause() { super.onPause(); // 页面离开时销毁计时器,避免内存泄漏和重复计时 if(countDownTimer != null){ countDownTimer.cancel(); countDownTimer = null; } } }
XML布局说明
你提供的XML布局代码无需修改即可正常使用。
内容的提问来源于stack exchange,提问作者user16240688
相关产品推荐
相关产品推荐

