我似乎有一个无法解决的问题,我花了一个周末解决它,无法解决。 当我制作一个包含两个 Activity 的简单测试应用程序时: 1. Mainactivity:几个按钮,一个计时器(后台线程)和一个对 SQLite 数据库的轻请求。 2. 第二个 Activity :几个按钮,只有一个有点击监听器,当你点击它时,你只需回到第一个 Activity 。 我使用大按钮(屏幕宽度约为屏幕高度的四分之一),xml 布局资源不包含任何嵌套的权重元素或其他奇特的东西。
这是一个测试项目,没有其他功能。
我遇到了以下严重问题: - 当我将 list 文件中的 api 级别设置为 3 时,一切正常。 (在兼容模式下自动屏幕) - 当我将 api 级别设置为 11 或更高时,加载第二个 Activity 最多可能需要 10 秒。 第一次打开第二个activity后,东西好像被缓存了,延迟不复存在了。 - 当我将 api 级别设置为 11 或更高时,我强制(屏幕分辨率)兼容模式:没有变化,延迟仍然存在。
我构建了这个测试项目,因为我在升级旧版应用时遇到了这个问题。它在较旧的 api 级别上运行顺利,每当我将它放入 Android 版本 3 或更高版本时,它都会延迟长达 25 秒! (即使打开仅显示静态文本的 Activity ...)。
我正在测试新的 Galaxy Tab,这不是问题所在。我花了几个小时在谷歌上搜索解决方案,但从未找到任何接近它的东西。我什至完全卸载了 Eclipse 和所有 android 资源,并重新安装和更新了所有内容(包括我的 Galaxy Tab 的出厂重置)。没运气。
查了一下,问题出在GLES20Canvas.nDrawDisplayList。构建此列表似乎需要花费大量时间,即使构建的内容并不多......
有人知道我该如何解决这个问题吗?
谢谢, 马丁
最佳答案
我通过检查这篇文章找到了解决这个问题的方法: http://code.google.com/p/android/issues/detail?id=22514
解决方案是禁用硬件加速。
在 AndroidManifest.xml
的应用程序标签中,添加:
android:hardwareAccelerated="false"
现在一切都恢复正常了。不幸的是,硬件加速并不能使您的应用在启动时运行得更快。
关于Android 性能 API 级别 11 及以上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13820952/