java - Android 永远循环/重复数学的最快和最正确的方法是什么?

标签 java android

我开始在 Android 中编程并创建一个不断进行数学运算并显示快速变化的数字(基本加法,但数字很大)的游戏

我曾在按下按钮时使用 .postDelayed(),但我觉得这不是最好或最有效的方法。我还想知道对于重复的内容,推荐的最快速度是多少?

我的按钮是这样的:

    buttonAdd.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch(event.getAction()){
                case MotionEvent.ACTION_DOWN:
                    myMethod();
                    buttonAdd.postDelayed(myMethodRun, delay);
                    break;
                case MotionEvent.ACTION_UP:
                    buttonAdd.removeCallbacks(myMethodRun);
                    break;
            }
            return true;
        }
    });

    Runnable myMethodRun = new Runnable() {
        @Override
        public void run() {
            myMethod();
            buttonAdd.postDelayed(this, delay);
        }
    };

我想做同样的事情,只使用 Root View 来制作一个 postDelayed()

body.postDelayed(runForever, delayTime);

Runnable runForever = new Runnable() {
        @Override
        public void run() {
            runForever();
            buttonAdd.postDelayed(this, delay);
        }
    };

while(true) 是这样做的好方法吗?我不想让一切都重载

是这样吗?还是我会使用过多的 UI 线程?显然,我还是有点新。 我想永远重复一个方法,我想知道推荐的最快延迟时间是多少

最佳答案

对于一款游戏来说,最重要的是用户体验,帧数是用户体验的主要组成部分。如果您保持适当的帧数,例如每秒 30 帧,那么用户会认为游戏中的所有过渡都很流畅。或者足够光滑,如果你愿意的话。如果您使用更高的 fps(例如每秒 60 帧),游戏的感觉可能会更好,但这种差异几乎不值得移动设备上的额外功耗。 (目前,60 fps 仅适用于在高端硬件上运行的高端游戏,例如配备顶级显卡的游戏机或台式电脑。)

因此,如果您以每秒 30 帧的速度拍摄,那么您只需每 33 毫秒渲染一次帧。比这更快地执行计算是没有意义的,因为这意味着您将计算永远不会呈现的东西,因此用户永远不会看到。

因此,只需将计时器设置为每 33 毫秒触发一次,进行计算、渲染帧、返回操作系统直到计时器再次触发。

关于java - Android 永远循环/重复数学的最快和最正确的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39560728/

相关文章:

java - Spring Controller 未返回文件

android - 直通 Intent 过滤器和 Activity

java - Gradle坚持下载一些依赖项(Android Studio)

android - Flutter - 如何在复选框动态列表中设置复选框小部件的状态

android - 如何使用 glReadPixels 从前台缓冲区读取?

java - 无法刷新 Groovy Socket

java - 找到给定总和的最宽子数组(数组切片)

java - Android studio "java.lang.OutOfMemoryError"模拟器 redmi 2 prime kitkat

带有自定义布局的 Android 对话框将组件压缩在一起

java - list 中引用的类在项目或库中找不到