作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用Timer
实现了每30秒一次的网络操作。
Timer myTimer_30sn_send_alive = new Timer();
myTimer_30sn_send_alive.schedule(new TimerTask() {
@Override
public void run() {
// Send alive message on network
// ....
}
}, 5000, 30 * 1000); // 30sn
如果网络超时为 40 秒,并且 Timer 将再次计时。
所以task可能还没有执行完Task,其他tick时间来了。
我想知道无论 TimerTask
操作是否完成,计时器都会计时吗!?
最佳答案
答案很简单:不,不是。虽然 TimerTask 在它自己的线程中运行,但它不会在另一个滴答结束之前开始一个新的滴答。
您可以使用这样的测试代码来验证这一点,并检查 logcat 的输出。
Timer testTimer = new Timer();
testTimer.schedule(new TimerTask() {
@Override
public void run() {
Log.d("Test", "Tick: " + SystemClock.elapsedRealtime());
SystemClock.sleep(10000);
}
}, 0, 5000);
关于Android:无论前一个滴答声尚未完成,计时器都会滴答作响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34449647/
我是一名优秀的程序员,十分优秀!