Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓游戏内存米高梅&x27;T_Android_Oop - Fatal编程技术网

Android 安卓游戏内存米高梅&x27;T

Android 安卓游戏内存米高梅&x27;T,android,oop,Android,Oop,我在安卓2.2上的游戏内存管理方面有一个问题。 我可以列举几种可能的理论来解释这一点: 在非缓存idea上加载位图(我使用项目的位图对象加载) 我没有使用位图。回收() 因为我使用的是OOP设计,所以我只使用Iterator.remove()而不是将其置零 位图实际大小达到300KB[延迟的主要原因] MediaPlayer对象用于播放音频动画 游戏前内存开销过大[所有内容都已加载] 虽然列举上述项目可以通过调整我的一些编码风格来完成,但我主要关心的是如何在安卓2.2上正确地编码游戏,而不会造成

我在安卓2.2上的游戏内存管理方面有一个问题。 我可以列举几种可能的理论来解释这一点:

  • 在非缓存idea上加载位图(我使用项目的位图对象加载)
  • 我没有使用位图。回收()
  • 因为我使用的是OOP设计,所以我只使用Iterator.remove()而不是将其置零
  • 位图实际大小达到300KB[延迟的主要原因]
  • MediaPlayer对象用于播放音频动画
  • 游戏前内存开销过大[所有内容都已加载]
  • 虽然列举上述项目可以通过调整我的一些编码风格来完成,但我主要关心的是如何在安卓2.2上正确地编码游戏,而不会造成手机上的主要延迟

      我应该考虑什么类比?<李>
    • 我应该使用OpenGL吗(但我的游戏只是一个2D加速计游戏)
    • 我是否应该只从数据库中获取所需的对象(但这意味着在整个游戏过程中保持对表的访问处于打开状态)
    • 或其他人,请张贴您的答案

    非常感谢您的回复

    正如斯莱顿所评论的,你的问题不是很集中。看起来你关心的是你的应用程序的内存占用和性能,但不确定从哪里开始。我建议您分析您的应用程序。找出它将大部分时间花在处理或分配内存上的位置。然后努力使代码的这一部分更有效率

    Android SDK包括一个很好的评测工具,如下所示:
    如何滞后?如果时不时出现口吃,可能是GC,这意味着您需要检查分配。您可以使用来检查。(例如,当使用FuleCH样式循环时,存在隐藏的分配。这些分配需要清理,GC将在您的代码中间运行。使用旧<代码>(int i=0;i < AARAYSIZE;I++)<代码>防止。) 另一方面,如果是持续滞后(触摸屏幕,等待200毫秒等待响应),则可能是操作顺序,尤其是任何绘图操作。将
    位图
    绘制到
    画布
    很慢,使用OpenGL可能会有所帮助。您可能还需要重新构造,以便任何输入在下一次绘制时都有视觉响应


    在任何情况下,如果您有特定的问题,它都会有所帮助。任何代码、分析度量等都能帮助我们找到更好的答案。

    这个非常模糊的问题,不清楚你在问什么我会说滞后的问题才是最重要的。我想如果我写的答案和你的问题一样具体和清晰:“不要写滞后的代码”将位图绘制到画布将是主要原因之一。了解OpenGL的工作原理可能需要我花一些时间。如果我要调整图像大小,即300kb[320x480]到150kb[160x240],然后在画布上调整它的大小,它会解决吗?我不确定,但我不这么认为。根据我的经验,画几个位图或画几十个位图大致相同。我认为限制是整个
    surfaceHolder.lockCanvas()
    surfaceHolder.unlockCanvasAndPost()过程。