【发布时间】:2019-12-13 05:26:13
【问题描述】:
我有一个单例对象,当应用程序运行时我将在其上执行一个线程。
到目前为止,我已经在MainActiviy::onCreate中创建了线程
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
thread{myobject.run()}
}
}
但是与documentation 指向onCreate() 的箭头是App 进程被杀死相反,看起来onCreate() 在每次重新启动应用程序时都会被调用,无论是否被杀死或者它的线程是否仍在运行。
object myobject{
fun run(){
while(true){
do_stuff()
}
}
}
当然可以获取一个锁来只启动线程一次,但是因为在 Kotlin 中有一个很好的语法用于单例对象,这是一个相关的(我认为很常见)问题,我开始相信可能存在可能是一种更简单更优雅的方式。
或者是获取对象锁定的首选方式?
【问题讨论】:
-
我认为你应该在 Application 的 onCreate() 中启动你的线程,这样在你的应用程序的整个生命周期中只有一个线程
-
这就是我正在做的事情,但是当用户离开并返回应用程序时会调用
onCreate(),所以我得到了多个线程 -
您在 onCreate 中执行此操作,我说在 Application 类的 onCreate 中执行 stackoverflow.com/questions/18002227/…
-
请写下这个答案!
标签: android multithreading kotlin