在过去的几个月里,我为 Android 创建的应用程序一直存在问题。似乎在打开相对较短的时间(大约 10-20 分钟)后,我的手机开始变得非常热。最重要的是,该应用程序有时会开始滞后一吨(大约下降 30-40 帧)。我一直试图追查这个问题一段时间,但没有运气。我对可能导致问题的原因有一些想法,但无法确认。
以下是有关我的设置的一些信息,可能是导致问题的原因:
该应用程序使用大约 50-80MB,如果加载声音或高质量图像,有时可能高达 140MB。
一切都直接绘制到 Java 画布上。(尝试用Java的canvas来画出高质量的app可以吗?)
我没有使用机器人的“活动”系统。相反,我有自己的系统,当某些事件被触发时,它通过传递字符串来创建和删除对象。(所以从技术上讲,整个程序始终在主要活动中运行,并且对象是通过我的系统处理的)。
我没有使用任何 androids UI 元素,而是我自己创建了所有内容。它们没有什么超级复杂的,我只是不确定使用 androids UI 元素是否有任何我不知道的好处。
主对象更新函数在线程中运行,而paint方法自己调用invalidate。我的对象通过以下代码更新
while (roomRunning) { if (!isPaused) update(); try { synchronized (this) { wait(5); } } catch (InterruptedException e) { e.printStackTrace(); } }
.005 秒是代码更新速率。这个更新速率非常接近 60 帧,感觉非常流畅,但我仍然担心它可能会太快(特别是因为应用程序有时可能必须在每次代码更新时处理数百个对象。
我监控了我的应用程序的内存使用情况,并将其与手机上运行的其他游戏进行了比较。许多其他应用程序的内存使用率似乎都很高,但是这些应用程序不会导致过热。此外,在我朋友的手机上运行我的应用程序时,我没有注意到任何过热或滞后问题。
这个问题可能是由手机故障引起的,还是我需要在我的应用程序中修复一些严重问题?
如果需要更多信息来解决此问题,请告诉我。