首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >希望每3秒使用thread.sleep显示一个值。但是,它不起作用

希望每3秒使用thread.sleep显示一个值。但是,它不起作用
EN

Stack Overflow用户
提问于 2022-07-23 21:58:52
回答 1查看 97关注 0票数 0

我在google中学习这个kotlin基础知识,在“调试入门”部分中使用im。我一直在努力研究这些问题,现在我被困在这里.因此,文本视图的预期结果是每三秒显示一个商数,但当我运行该应用程序时,它显示的静态值为60。

代码语言:javascript
复制
private val TAG = "MainActivity"

MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Log.d (TAG, "this is where the app crashed before")
    setContentView(R.layout.activity_main)

    Log.d (TAG, "this should be logged if the bug is fixed.")
    logging()
    division()
}

fun division (){
    val numerator = 60
    var denominator = 4
    repeat(4) {
        Thread.sleep(3)
        findViewById<TextView>(R.id.division_textview).setText("${numerator/denominator}")
        Log.v(TAG, "${numerator / denominator}")
        denominator --
    }
}

我从小就想学习编程/开发。不幸的是,事情没有解决..。现在我在这里,我百分之百地致力于这个。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-07-23 22:22:02

那个codelab开始困扰我了--不是你,他们的代码被破坏了,而且100%都错了。我已经更详细地回答了这一点,here (以及这个答案链接到another answer,并给出了一些关于如何实际实现它的建议)。

基本上问题是你在睡觉主线程,它阻止了应用程序的运行,包括UI更新和对触摸的反应。在循环完成并退出division函数之前,它将无法继续运行--此时UI可以更新,并最终显示TextView的当前内容,此时这是最终结果。

在用户看来,似乎有一段时间没有什么事情发生,然后就会出现最终结果。这段代码应该也是录制应用程序视频的演示的一部分,我认为没有人真正运行这个程序。你不应该像这样阻止主线程。我从困惑的初学者那里看到了很多关于codelab的问题,作为一个官方的资源,它没有任何借口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73094481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档