Android Studio Java实现1秒间隔60秒倒计时的问题求助
解决方案:Android 60秒倒计时功能完善
首先修正你代码里的几处语法错误:
private Handler handler new Handler();缺少等于号,应为private Handler handler = new Handler();timeDisplay (TextView) findViewByid(R.id.timeDisplay);缺少等于号,且findViewByid拼写错误,正确写法是findViewByIdsavedinstanceState拼写错误,正确为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
相关产品推荐
相关产品推荐

