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

Android Studio中Kotlin实现几秒后自动跳转Activity的方法

在Kotlin中实现Android Activity延迟自动跳转的几种方法

下面是几种在Kotlin环境下实现Activity延迟自动跳转的实用方案,覆盖不同场景需求:

方法一:使用Handler.postDelayed()

这是传统的延迟执行方式,适合简单跳转场景:

import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import androidx.appcompat.app.AppCompatActivity

class SplashActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash)

        // 延迟3秒后执行跳转逻辑
        Handler(Looper.getMainLooper()).postDelayed({
            val intent = Intent(this, MainActivity::class.java)
            // 可选:清除返回栈,避免用户返回当前Activity
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
            startActivity(intent)
            finish() // 结束当前Activity
        }, 3000) // 延迟时间,单位为毫秒
    }
}

注意:API 29及以上版本必须指定Looper.getMainLooper(),否则会抛出异常;如果Activity可能提前销毁,记得移除回调避免内存泄漏。

方法二:使用Kotlin协程(推荐)

协程是Kotlin官方推荐的异步处理方式,代码更简洁且能自动绑定生命周期:

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

class SplashActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash)

        // 用lifecycleScope绑定Activity生命周期,自动取消协程
        lifecycleScope.launch {
            delay(3000) // 延迟3秒
            val intent = Intent(this@SplashActivity, MainActivity::class.java)
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
            startActivity(intent)
            finish()
        }
    }
}

要点:新建Android项目默认已包含协程依赖,lifecycleScope会在Activity销毁时自动终止协程,无需手动处理内存泄漏问题。

方法三:使用CountDownTimer(适合需显示倒计时的场景)

如果需要在界面上展示倒计时进度,用CountDownTimer更便捷:

import android.content.Intent
import android.os.Bundle
import android.os.CountDownTimer
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class SplashActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash)

        val tvCountDown = findViewById<TextView>(R.id.tv_count_down)

        object : CountDownTimer(3000, 1000) {
            // 每隔1秒回调一次,更新倒计时显示
            override fun onTick(millisUntilFinished: Long) {
                tvCountDown.text = "剩余 ${millisUntilFinished / 1000} 秒"
            }

            // 倒计时结束后执行跳转
            override fun onFinish() {
                val intent = Intent(this@SplashActivity, MainActivity::class.java)
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
                startActivity(intent)
                finish()
                cancel()
            }
        }.start()
    }
}

说明:第一个参数是倒计时总时长,第二个参数是回调间隔时间,可根据需求调整数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:52:16