【发布时间】:2010-07-03 13:49:38
【问题描述】:
我希望在 Android 上创建触发 UI 更改(如 Toast)的定时事件。我已经知道你可以使用 Handler 对象的 postDelayed(runnable, timeDelay) 方法 (see this page for a great example) 来做到这一点。
这里是转折点:我还需要能够暂停和恢复这些事件的倒计时。因此,当用户暂停屏幕计时器时,它也会在每个事件触发之前暂停倒计时。
想到的一种方法是在新的Thread(不是 UI 线程)上创建一个Handler 对象,并使用postDelayed 将我的事件排队;然后我会根据需要使用this method 暂停或恢复整个Thread 的执行。这里的主要问题是弄清楚如何让事件被触发后在 UI 线程上运行。
我能想到的唯一其他方法是检查计时器在 UI 线程上的所有事件(蛮力)列表中的每一秒,这非常混乱。
如果有人对此或解决方案有任何想法,那就太好了!
【问题讨论】:
-
我刚刚尝试了带有处理程序的新线程,它给了我错误“无法在未调用 Looper.prepare() 的线程内创建处理程序”。所以看起来这种方法已经过时了。
-
你在里面调用 Looper.prepare() 了吗? developer.android.com/reference/android/os/Looper.html
标签: java android timer handler