关闭postDelayed处理程序

时间:2020-10-10 02:04:57

标签: android kotlin android-activity timer handler

我的应用程序从标题屏幕开始,然后在用户触摸标题屏幕时运行游戏活动。

我也希望它在3秒后启动,即使用户没有触摸屏幕。

定时器可以工作-但问题是,当定时器动作之前他们触摸屏幕时,会出现游戏,然后在定时器启动时再次出现。

这是科特林代码

class TitleActivity2 : AppCompatActivity() {

    var t = Handler()

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

        titleVersionTextView.setText("V." + VERSION)

        t.postDelayed({
            val i = Intent(this, MainActivity::class.java)
            startActivity(i)
            finish()
        }, 3000.toLong())

        TitleActivityLayout.setOnClickListener() {
            // t.removeCallbacks(r) // //timer. .purge() .cancel() .isCanceled()
            val i = Intent(this, MainActivity::class.java)
            startActivity(i)
        }
    }
}

1 个答案:

答案 0 :(得分:1)

首先,您必须创建一个Runnable变量:

val runnable = Runnable {
    val i = Intent(this, MainActivity::class.java)
    startActivity(i)
    finish()
}

然后:

t.postDelayed(runnable, 3000)

现在您可以将其删除为:

TitleActivityLayout.setOnClickListener() {
    t.removeCallbacks(runnable)
    val i = Intent(this, MainActivity::class.java)
    startActivity(i)
}
相关问题