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

从内部类访问SplashScreen时出现Unresolved reference: this@SplashScreen错误

问题原因

你的SplashTimerTask是静态内部类(Kotlin中不带inner关键字的内部类默认是静态的),静态内部类不会持有外部SplashScreen实例的引用,所以无法通过this@SplashScreen访问外部Activity。


方案1:使用inner修饰内部类(非静态内部类)

给SplashTimerTask加上inner关键字,让它成为非静态内部类,这样就能持有外部SplashScreen的引用。同时要注意:TimerTask的run方法运行在后台线程,启动Activity必须切换到主线程执行:

class SplashScreen : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash_screen)
        verifyPermissions()
        // 示例:启动延迟任务
        Timer().schedule(SplashTimerTask(), 2000)
    }

    // 添加inner关键字,转为非静态内部类
    private inner class SplashTimerTask : TimerTask() {

        override fun run() {
            // 切换到主线程执行Activity操作
            runOnUiThread {
                val mainIntent = Intent(this@SplashScreen, LoginActivity::class.java)
                startActivity(mainIntent)
                finish()
            }
        }
    }
}

方案2:给内部类传入外部Activity引用

如果不想用非静态内部类(避免潜在的内存泄漏风险),可以在创建SplashTimerTask时传入SplashScreen的实例,内部类保存这个引用后直接使用:

class SplashScreen : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash_screen)
        verifyPermissions()
        // 创建Task时传入当前Activity实例
        Timer().schedule(SplashTimerTask(this), 2000)
    }

    private class SplashTimerTask(private val activity: SplashScreen) : TimerTask() {

        override fun run() {
            activity.runOnUiThread {
                val mainIntent = Intent(activity, LoginActivity::class.java)
                startActivity(mainIntent)
                activity.finish()
            }
        }
    }
}

额外注意事项

  • 内存泄漏防范:如果使用非静态内部类,当TimerTask仍在运行时Activity被销毁,可能会导致内存泄漏。可以用WeakReference包装Activity引用,或者改用Coroutine、Handler等更适配Android的延迟方案。
  • 主线程约束:所有涉及Activity的操作(如startActivity、finish)必须在主线程执行,务必通过runOnUiThread切换线程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:31:34