9

我在 Android 3.2 上开发并测试了一个应用程序,它与 SQLite 数据库交互并在屏幕上显示结果。我没有动画或任何花哨的东西。我所拥有的是很多 ListViews 来向用户显示数据。

该应用程序的数据库非常大,有些表有超过 30 万行。我们尝试在与数据库的每次交互中使用 AsyncTask,但仍有一些地方需要优化性能。

问题是该公司将一些平板电脑更新为 Ice Cream Sandwich,并且该应用程序比 Honeycomb 上的应用程序要慢得多。我在两台设备中加载了相同的代码和相同的数据库,一台运行 ICS,另一台使用 Honeycomb。该应用程序在 3.2 设备中的表现要好得多。我也尝试过使用<uses-sdk android:minSdkVersion="14" />,但效果并不好。

我能做些什么来优化 4.0 的性能吗?我也很想知道为什么会发生这种情况,以及是否有什么可能导致这种情况(某些组件或类在 4.0 上不能很好地工作)。

谢谢!

更新:我找到了我的应用程序主屏幕的解决方案。我正在展示一个作为水平列表工作的片段,它HorizontalScrollView加载了一个巨大的数据列表并创建了很多LinearLayout要在 ScrollView 中呈现的内容。我找到了一个 Horizo​​ntalListView 的小部件用它来加载我的列表。只是这让应用程序更快。但是我没有找到为什么在 ICS 上速度较慢的答案。

我也尝试分析应用程序,但这是一件非常困难的事情,有很多信息。在接下来的几周内,我可能仍会这样做以加快申请速度。谢谢大家的回答和评论!

4

1 回答 1

2

My guess is it is related to hardware acceleration which is default enabled for ice cream sandwich. Hardware acceleration is nice but it sometimes comes with a performance decline.

There is another interesting read about android hardware acceleration by Dianne Hackborn on google+ I'd recommend you to look at.

于 2012-12-01T12:49:59.907 回答