8

我似乎有一个无法解决的问题,我花了一个周末来解决它,无法解决它。当我用两个活动制作一个简单的测试应用程序时: 1. Mainactivity:几个按钮、一个计时器(后台线程)和一个对 SQLite 数据库的轻请求。2. 第二个活动:几个按钮,只有一个有一个点击监听器,当你点击它时,你只需回到第一个活动。我使用大按钮(屏幕宽度约为屏幕高度的四分之一),xml 布局资源不包含任何嵌套的权重元素或其他奇异的东西。

这是一个测试项目,没有其他功能。

我遇到了以下严重问题: - 当我将清单文件中的 api 级别设置为 3 时,一切正常。(在兼容模式下自动屏幕)-当我将 api 级别设置为 11 或更高时,第二个活动可能需要长达 10 秒才能加载。第一次打开第二个activity后,东西好像被缓存了,延迟不复存在了。- 当我将 api 级别设置为 11 或更高时,我强制(屏幕分辨率)兼容模式:没有变化,延迟仍然存在。

我已经构建了这个测试项目,因为我在升级旧应用程序时遇到了这个问题。它在较旧的 api 级别上运行顺利,每当我将它放到 Android 版本 3 或更高版本时,它都会延迟长达 25 秒!(即使是打开一个只显示静态文本的活动......)。

我正在测试一个新的 Galaxy Tab,这不是问题。我花了几个小时在谷歌上搜索解决方案,但从未找到任何接近它的东西。我什至完全卸载了 Eclipse 和所有 android 资源,并重新安装和更新了所有内容(包括我的 Galaxy Tab 的出厂重置)。没运气。

我做了一个跟踪,问题出在 GLES20Canvas.nDrawDisplayList 中。似乎建立这个列表需要很多时间,即使没有太多要建立的......

有谁知道我该如何解决这个问题?

谢谢,马丁

4

2 回答 2

3

我通过检查这篇文章找到了解决这个问题的方法: http ://code.google.com/p/android/issues/detail?id=22514

解决方案是禁用硬件加速。

AndroidManifest.xml, 在您的应用程序标记中,添加:

android:hardwareAccelerated="false"

现在一切都再次顺利进行。不幸的是,硬件加速不会使您的应用程序在启动时运行得更快。

于 2012-12-11T14:40:34.527 回答
1

GLES20Canvas.nDrawDisplayList

当它来的时候expected to have a large portion of the time if you are drawing a lot, especially very big views

我希望你给你来自android-30-hardware-acceleration的 Do's 和 Dont's 链接

于 2012-12-11T13:05:35.933 回答