0

我有一个基于 OpenGL 的应用程序,到目前为止一切正常。该应用程序由 2 个活动组成,主要活动包含 OpenGL 视图和一个附加活动,其中包含用于某些过场动画的电影播放器​​。

在某些低端设备(例如 LG P690、Android 2.3.4)上,电影活动运行后性能会显着下降。之后,主要活动运行如此缓慢,仅达到约 30 fps 而不是 50 fps。

如果您通过按下主页按钮离开应用程序并重新启动它,您可以“修复”它再次变得更快。然后一切又好了-直到再次显示电影查看活动...

我做了一些测试,不管活动#2 实际做了什么,这种效果也会发生,即使它只是一个闪屏或其他什么。如果我从不调用第二个活动,那么性能总是很高。

注意:OpenGL 活动不会多次实例化,这可能会导致类似的效果。

有人遇到过相同或类似的问题并且知道补救措施吗?

4

2 回答 2

0

我在我的两台设备上发现了同样的问题:

  • acer 液态金属 (android 2.3) 在我的应用程序中从 50 fps 下降到 45 fps

  • 'cube' 10.1" 平板电脑 (android 4.0) - 在我的应用程序中从 60 fps 下降到 30 fps

但是,我正在使用画布方法,将 SurfaceView 作为子项直接附加到我的 Activity。

我进行了调查,并且使用 adialog而不是活动有效。另一件似乎可行的事情是将您的活动的清单条目更改为具有如下属性:

android:theme="@android:style/Theme.Dialog"

请注意:使用这些技术中的任何一种都可以解决问题,但是您的调用活动的生命周期事件将不会像以前那样运行。即不会调用 onPause 等。您需要将自定义代码从这些方法移动到您的对话框打开代码中。

这是发现和调试的真正痛苦。我希望这个问题不存在。

于 2012-06-12T14:28:50.127 回答
0

不幸的是,我缺乏声誉,无法发表评论。

我可以想象当您从第二个返回时,您的 opengl 活动的一个新实例会启动。

您可能想提出一个特定的意图来避免这种情况。

例如,我会尝试 FLAG_ACTIVITY_CLEAR_TOP。

给开发人员页面上的意图看看:http: //developer.android.com/reference/android/content/Intent.html

那里列出了所有标志并附有说明。

希望这会为您提供解决方案!

于 2012-05-12T16:51:27.993 回答