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

Android实现练习题答题超时自动跳转下一题的最优方案咨询

Android 练习题超时自动切题最优实现方案

现有实现的缺陷

你当前的忙等方案存在严重问题:

  • while (!future.isDone()) {} 会持续占用主线程CPU资源,直接导致界面卡顿、用户输入无响应,甚至触发ANR(应用无响应)崩溃,完全不适合生产环境使用
  • 额外创建线程池执行休眠任务属于不必要的资源浪费

CountDownTimer 取消失效的原因

多数情况下不是cancel()方法本身无效,而是调用取消时,倒计时的结束回调消息已经被发送到主线程消息队列,就算取消了定时器,已经入队的消息依然会执行,看起来就像取消没生效,只要额外加状态校验就能解决,但整体灵活性不如下面的方案。

最优实现方案

Kotlin 协程方案(当前Android官方首选)

基于页面生命周期作用域的协程实现,无需手动管理线程/定时器,自动适配生命周期避免内存泄漏:

// 保存当前题目的倒计时任务
private var currentCountdownJob: Job? = null

// 加载下一题逻辑
private fun loadNextExercise() {
    // 先取消上一道题的倒计时
    currentCountdownJob?.cancel()
    // 替换Fragment展示新题
    supportFragmentManager.beginTransaction()
        .replace(R.id.exercise_container, getNextExercise())
        .commit()
    // 启动新的5秒倒计时
    currentCountdownJob = lifecycleScope.launch {
        delay(5000)
        // 超时自动加载下一题
        loadNextExercise()
    }
}

// 用户作答回调中调用即可切题
fun onUserAnswer() {
    // 处理用户作答逻辑
    // ...
    // 直接加载下一题,内部会自动取消当前倒计时
    loadNextExercise()
}

Java Handler 方案

基于Android原生消息机制实现,轻量可靠,取消逻辑无歧义:

// 全局变量
private final Handler mainHandler = new Handler(Looper.getMainLooper());
private Runnable currentCountdownRunnable;

private void loadNextExercise() {
    // 先取消上一题的倒计时
    if (currentCountdownRunnable != null) {
        mainHandler.removeCallbacks(currentCountdownRunnable);
    }
    // 展示新题
    getSupportFragmentManager().beginTransaction()
            .replace(R.id.exercise_container, getNextExercise())
            .commit();
    // 创建倒计时任务
    currentCountdownRunnable = new Runnable() {
        @Override
        public void run() {
            // 超时自动切题
            loadNextExercise();
        }
    };
    // 延迟5秒执行
    mainHandler.postDelayed(currentCountdownRunnable, 5000);
}

// 用户作答回调
public void onUserAnswer() {
    // 处理用户作答逻辑
    // ...
    loadNextExercise();
}

// 页面销毁时清空所有任务避免内存泄漏
@Override
protected void onDestroy() {
    super.onDestroy();
    mainHandler.removeCallbacksAndMessages(null);
}

内容的提问来源于stack exchange,提问作者J.Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:45:01