java - 在 Android Kotlin 中重新访问应用程序后快速加载启动画面

标签 java android android-studio kotlin splash-screen

我有一个启动并持续 5 秒的启动屏幕,然后消失并继续或被 MainActivity 替换,但是我希望当我按下后退按钮并重新打开应用程序时,启动屏幕的加载速度将比第一次打开时更快(<5s ),那么该怎么做。
这是我的代码:

class SplashActivity : BaseActivity() {

    companion object{
        private const val PREFS:String = "prefs"
        private const val FIRST_RUN:String = "first_run"
        private const val SPLASH_DELAY: Long = 5000
    }


    private var mDelayHandler: Handler? = null

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

        mDelayHandler = Handler()
        mDelayHandler!!.postDelayed(mRunnable, SPLASH_DELAY)

        var animation: Animation = AnimationUtils.loadAnimation(this,R.anim.splash_animation)
        logo.startAnimation(animation)
    }

    private val mRunnable = Runnable {
        Thread(Runnable {
            try {
                Thread.sleep(100)
            } catch (e: InterruptedException) {
                e.printStackTrace()
            }
            startActivity()

        }).start()
    }

    private fun startActivity() {
        val settings = getSharedPreferences(PREFS, 0)
        val firstRun = settings.getBoolean(FIRST_RUN, false)
        var intent = if (!firstRun) {
            val editor = settings.edit()
            editor.putBoolean(FIRST_RUN, true)
            editor.commit()
            Intent(this, OnBoardingActivity::class.java)

        } else {
            Intent(this, MainActivity::class.java)
        }

        intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
        startActivity(intent)
        this.finish()

        mDelayHandler!!.removeCallbacks(mRunnable)

    }

    override fun onDestroy() {
        mDelayHandler?.removeCallbacks(mRunnable)
        super.onDestroy()
    }


最佳答案

您可以使用静态变量,试试这个

companion object{
    private var SPLASH_DELAY: Long = 5000
}
mDelayHandler!!.postDelayed(mRunnable, SPLASH_DELAY)
SPLASH_DELAY = 1000

关于java - 在 Android Kotlin 中重新访问应用程序后快速加载启动画面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62907122/

相关文章:

java - JFrame 装饰有 Windows 边框,即使 Look&Feel 设置为其他方式

android - 没有Phonegap构建的Android Phonegap应用

android-studio - 如何在Flutter Dev Tool中启用 'Performance Overlay'

安卓工作室 : Layout Preview gives "native typeface cannot be made"

android - 如何让android webview保持在后台(使用位置)

java - 调用实例方法而不指定实例名称

java - 销毁 Jframe 对象

java - 在 Windows 10 上通过 Java Runtime Exec 在 Cygwin bash 上调用 Shell 脚本

java - 异步线程停止主 UI 线程

android - 将动态 subview 垂直添加到 ConstraintLayout