Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android计时器:postDelayed与计划大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
请不要暂停,请不要标记为重复,请回答我!
我需要每200毫秒完成一件事,我需要它平滑而均匀.要做的任务是中等重量(在两种情况下,问题1和2).
搜索计时器看起来像社区的最佳解决方案是使用处理程序,runnable和postDelayed(),( Android timer? How-to?).

更新的问题:

– 如果我必须与UI,postDelayed()或schedule()/ scheduleAtFixedRate()进行交互,那么哪种方式最精确,最快?

– 如果我不必与UI,那么哪种方式最准确,最快?

– 两种方式可以在主进程上执行还是在单独的进程上执行?怎么样 ?

谢谢.
一些例子……

这样@L_993_5@mainclass本地对象,但它是一个新线程吗?这是一个很好的实践吗?

timer.schedule( new TimerTask() {           
        @Override
        public void run() {
                    textview.setText(str);
                    //other stuff            
                                     }
            },200);

接下来是另一个有计划,任务是在一个单独的任务,而不是计时器本身,我猜,我不能直接与UI交互,我猜…

timer.schedule( new aclass(),200);

处理方式(来自Dave.b):

Handler timerHandler = new Handler();
Runnable timerRunnable = new Runnable() {
    @Override
    public void run() {
        TextView.setText(str);
        // other stuff
        timerHandler.postDelayed(this,500); }
};

@Override
public void onCreate(Bundle savedInstanceStatE) {
...
timerHandler.postDelayed(timerRunnable,0);
}

解决方法

Timer在一个单独的线程上执行其任务,该线程仅用于服务由此特定计时器创建的任务. Handler在其Looper的线程上运行其任务,该线程可能是也可能不是UI线程.一般来说,如果在单独的线程上使用Handler,则这两个类之间没有太大区别.但在Android中使用Handler和HandlerThread更为常见.

如果需要与UI交互,最好在主线程上使用Handler以避免上下文切换.但是在这种情况下可能存在一些延迟,因为这种计时器的性能将取决于UI的整体性能.

更新:在第三个示例中,Runnable在主线程上执行.我假设此示例中的所有代码都位于Activity子类中.

Handler,Timer和scheduledexecutorservice使用类似的方法来调度任务.从一种实现切换到另一种实现时,我不确定您是否可以在精度或性能方面进行重大更改.

更新:最后,我建议你选择一个计时器:

>如果您需要在单独的线程上运行任务或/并且任务对主线程来说太重,请使用scheduledexecutorservice.>使用Handler在主线程上运行任务,或者如果需要其消息队列功能.>不要使用Timer,而是使用scheduledexecutorservice.

大佬总结

以上是大佬教程为你收集整理的Android计时器:postDelayed与计划全部内容,希望文章能够帮你解决Android计时器:postDelayed与计划所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。