gpt4 book ai didi

android - 我的应用程序在某些 Android 设备上运行速度过快

转载 作者:行者123 更新时间:2023-11-29 14:41:45 25 4
gpt4 key购买 nike

我刚刚发布了一个应用程序,Avoid The Spikes!在安卓市场上。我的一些 friend 已经在他们的手机/平板电脑上下载了应用程序,我被告知运行速度太快了。它在我的 android (HTC Dream) 上运行得很好。有什么方法可以告诉它在某些机器人上运行的速度有多快,以及如何相应地调整它?我到处搜索,还没有找到答案。

最佳答案

我在 Android Market 上看过您的游戏并试过了。

您实际上无法确定您将在各种现有硬件上获得的最小和最大速度,因为:

  • 每天都有新硬件出现在市场上
  • 在给定的硬件上,其他因素可能会影响应用的执行速度。

你应该做的是让你的游戏独立于帧率。为此,请避免在每次更新对象位置时让对象移动固定距离。最好让它们移动固定距离一段时间

为此,每次更新对象的位置时测量自上次更新以来耗时,并相应地计算要移动到的距离。

这样,根据硬件的质量,这些物体会很好地跳跃或移动,但至少它们会以相同的速度进行,而这个速度将由您决定。当您在全新机器或旧机器上玩 FPS 游戏时,这有点相同:运动速度是恒定的,只是帧率不是。在旧机器上你会有物体跳跃的印象,而在新机器上它们移动优雅,但它在这两种情况下都有效(嗯,当然,对于旧机器来说,在一定范围内)。机器永远不会太快。

给你一些伪代码,一个伞兵从屏幕的顶部掉到底部:

  • 这是要避免的循环:

    while (playing) { 
    update_positions();
    display();
    }

    update_positions() {
    paratrooper.y -= 10; // the paratrooper's altitude decreases of 10 at each update
    }

在较慢的硬件上,穿过屏幕需要数小时。在快速硬件上,这会太快了,您甚至看不到伞兵坠落。

  • 正确的做法是:

    while (playing) { 
    update_positions();
    display();
    }

    update_positions() {
    time_elapsed = getSystemTimeInMS() - lastUpdateTimeInMS();
    paratrooper.y -= 0.01 * time_elapsed; // the paratrooper's altitude decreases of 10 per second

    setLastUpdateTimeMS(getSystemTimeInMS()); // This way it includes the calculation time
    }

在慢速硬件上,穿过整个屏幕可能需要 15 次显示,而在快速硬件上则需要 45 次显示,但在每种情况下,你的伞兵都以每秒 10dp 的速度下降。

关于android - 我的应用程序在某些 Android 设备上运行速度过快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7215723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com