【发布时间】:2016-10-09 08:18:05
【问题描述】:
我是一名初级安卓开发者。 (大约一周前开始)
我试图做一些秒表应用,所以我有一个可以更新的 Textview 和几个按钮来启动/停止。
这是我最初的想法:
//showing only pseudocode of callback method
run() {
while(true) {
//do calculations
//calling setText -> updating the view
}
}
然后,我尝试了以下方法:
run() {
//do calculations
//calling setText -> updating the view
handler.postDelayed(this, 0) //calling this same method recursively
}
第二种方法很有效。 我不明白为什么第一种方法不起作用。 我认为使用循环而不是递归会更有效。
当我点击开始按钮,程序锁定,不能按任何东西。 似乎它甚至没有进入循环,因为即使在第一次迭代时它也不会更新视图。我什至尝试在其中放置一个 Thread.sleep 以“减慢它”(我认为它可能对系统或其他东西来说太快了)但结果相同。
所以问题是,为什么 android 视图不喜欢迭代? 请注意,其余代码都是相同的,只需删除循环即可。
是否与在 UI 线程上运行有关?但是,为什么这样做的递归方式有效?
【问题讨论】:
标签: java android loops recursion