You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio Java实现1秒间隔60秒倒计时的问题求助

解决方案:Android 60秒倒计时功能完善

首先修正你代码里的几处语法错误:

  • private Handler handler new Handler(); 缺少等于号,应为 private Handler handler = new Handler();
  • timeDisplay (TextView) findViewByid(R.id.timeDisplay); 缺少等于号,且findViewByid拼写错误,正确写法是findViewById
  • savedinstanceState 拼写错误,正确为savedInstanceState

接下来完善updateTimer的Runnable逻辑,实现每秒倒计时并更新UI,直到时间归0:

public class MainActivity extends AppCompatActivity {
    int time;
    TextView timeDisplay;
    private Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        time = 60;
        timeDisplay = (TextView) findViewById(R.id.timeDisplay);
        // 初始化显示初始倒计时数值
        timeDisplay.setText(String.valueOf(time));
        handler.removeCallbacks(updateTimer);
        handler.postDelayed(updateTimer, 1000); 
    }

    private Runnable updateTimer = new Runnable(){
        public void run(){
            // 每秒将剩余时间减1
            time--;
            // 更新TextView显示当前剩余时间
            timeDisplay.setText(String.valueOf(time));
            
            // 时间未到0时,继续延迟1秒执行该Runnable,实现循环倒计时
            if (time > 0) {
                handler.postDelayed(this, 1000);
            } else {
                // 倒计时结束后的操作,比如提示用户
                timeDisplay.setText("倒计时结束!");
            }
        }
    };
    
    // Activity销毁时移除回调,避免内存泄漏
    @Override
    protected void onDestroy() {
        super.onDestroy();
        handler.removeCallbacks(updateTimer);
    }
}

核心逻辑说明:

  • 在run()方法中,先递减剩余时间,再更新UI显示当前数值
  • 通过if (time > 0)判断是否继续倒计时:如果是,再次调用postDelayed让Runnable每秒执行一次;如果时间归0,停止循环并执行结束逻辑
  • 新增onDestroy()方法移除Handler回调,防止Activity销毁后仍持有引用导致内存泄漏

内容的提问来源于stack exchange,提问作者LYH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:15:27