Android:从 TimerTask 访问 activity 上下文
Android: Access activity context from TimerTask
是否可以从 TimerTask 对象访问 activity 上下文?到目前为止,这是我所拥有的,但是我在尝试从 TimerTask 对象访问 this(Activity context) 时遇到错误。以下代码包含在 Activity:
中
Timer().schedule(object : TimerTask() {
override fun run() {
runOnUiThread(object : Runnable {
override fun run() {
startActivity(Intent(this, HomeScreenActivity::class.java))
finish()
}
})
}
}, 2)
如您所见,我在
上尝试了 运行 任务
runOnUiThread(...)
但我仍然无法访问 Activity 上下文。任何帮助将不胜感激!
this
指的是最直接的封闭函数的 this
,在本例中是您的 Runnable。使用 this@MyActivity
指定外部 activity class,其中 MyActivity
是 class.
的名称
有必要使用 runOnUiThread
并不是因为您尝试过它,而是因为您无法从后台线程启动 activity。
顺便说一句,Kotlin 提供了一些扩展函数和 SAM 转换,可以使您的代码更具可读性:
Timer().schedule(2000L) {
runOnUiThread {
startActivity(Intent(this@MyActivity, HomeScreenActivity::class.java))
finish()
}
}
是否可以从 TimerTask 对象访问 activity 上下文?到目前为止,这是我所拥有的,但是我在尝试从 TimerTask 对象访问 this(Activity context) 时遇到错误。以下代码包含在 Activity:
中 Timer().schedule(object : TimerTask() {
override fun run() {
runOnUiThread(object : Runnable {
override fun run() {
startActivity(Intent(this, HomeScreenActivity::class.java))
finish()
}
})
}
}, 2)
如您所见,我在
上尝试了 运行 任务runOnUiThread(...)
但我仍然无法访问 Activity 上下文。任何帮助将不胜感激!
this
指的是最直接的封闭函数的 this
,在本例中是您的 Runnable。使用 this@MyActivity
指定外部 activity class,其中 MyActivity
是 class.
有必要使用 runOnUiThread
并不是因为您尝试过它,而是因为您无法从后台线程启动 activity。
顺便说一句,Kotlin 提供了一些扩展函数和 SAM 转换,可以使您的代码更具可读性:
Timer().schedule(2000L) {
runOnUiThread {
startActivity(Intent(this@MyActivity, HomeScreenActivity::class.java))
finish()
}
}