如何在Android上每帧调用一次Activity方法?

如何在Android上每帧调用一次Activity方法?,android,Android,我希望有时(当一个标志打开时)在一个Android活动中每画一帧更新几个UI组件(即,当应用程序不可见时不更新,并且每帧不超过一次)。我该怎么做?这个问题特别指出了“每个绘制的帧”,这意味着在正在绘制的任何帧中重写onDraw(),都会准确地解决您的问题 如果这不是您想要的,您应该看看,它在每次显示刷新时调用回调一次。每次调用回调时都必须续订它。要在活动处于后台时停止回调,请在onResume()中建立回调,并在onPause()中设置一个标志;如果回调函数看到设置了该标志,它不会自行更新 Ch

我希望有时(当一个标志打开时)在一个Android活动中每画一帧更新几个UI组件(即,当应用程序不可见时不更新,并且每帧不超过一次)。我该怎么做?

这个问题特别指出了“每个绘制的帧”,这意味着在正在绘制的任何帧中重写
onDraw()
,都会准确地解决您的问题

如果这不是您想要的,您应该看看,它在每次显示刷新时调用回调一次。每次调用回调时都必须续订它。要在活动处于后台时停止回调,请在
onResume()
中建立回调,并在
onPause()
中设置一个标志;如果回调函数看到设置了该标志,它不会自行更新


Choreographer的文档记录了做普通事情的高级API特性。如果其中一个符合您的需要,请选择它,而不是使用较低级别的API。

您是否尝试了该API?谢谢!我尝试使用更高级别的API,但我的要求是“每次vsync都执行任意更新”,因此
Choreographer
似乎是我最简洁的解决方案。如何“更新”回调?我试着做
Choreographer.getInstance().postFrameCallback(这个)从回调内部,但当我尝试设置可绘制文件的边界时,它会导致NPE。请注意,在另一个线程的while循环中调用相同的代码不会导致任何异常……这应该是可行的。如果您遇到了意外的NPE,请打开一个新问题,并用导致异常的代码片段发布您遇到的异常。(请记住,发布的代码没有行号,因此您需要指出哪一行是负责的。)代码在一个线程中工作而在另一个线程中不工作这一事实表明线程安全存在问题,但您需要提供更多细节以确保。