Hox*_*Hox 5 animation android garbage-collection
在我的应用程序中,我有一个ViewSwitcher,有两个孩子,如下所示:
<ViewFlipper
android:id="@+id/galeryviewflipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/galeryimageview_0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
/>
(... other stuff here)
</RelativeLayout>
<RelativeLayout>
(... copy previous except for IDs)
</RelativeLayout>
</ViewFlipper>
Run Code Online (Sandbox Code Playgroud)
然后我正在切换图库图像(每张图片大约800x600):
//(setup wanted images into ImageViews)
//then:
viewFlipper.setInAnimation(instance, R.anim.fade_in);
viewFlipper.setOutAnimation(instance, R.anim.fade_in);
viewFlipper.setDisplayedChild(nextIndex);
Run Code Online (Sandbox Code Playgroud)
在Android 2.3.4上,一切都按预期进行,但在2.3.5手机(Galaxy S2)上,dalvik在动画期间调用了几次GC,这导致了糟糕的用户体验(注意GC时间和持续时间!).我没有明确地在app中调用System.gc.
05-18 21:06:56.040: D/dalvikvm(6617): GC_EXTERNAL_ALLOC freed <1K, 50% free 5447K/10695K, external 17083K/17815K, paused 30ms
05-18 21:06:56.115: D/dalvikvm(6617): GC_EXTERNAL_ALLOC freed <1K, 50% free 5447K/10695K, external 17083K/17815K, paused 30ms
05-18 21:06:56.175: D/dalvikvm(6617): GC_EXTERNAL_ALLOC freed <1K, 50% free 5447K/10695K, external 17083K/17815K, paused 31ms
05-18 21:06:56.245: D/dalvikvm(6617): GC_EXTERNAL_ALLOC freed <1K, 50% free 5447K/10695K, external 17083K/17815K, paused 30ms
05-18 21:06:56.305: D/dalvikvm(6617): GC_EXTERNAL_ALLOC freed <1K, 50% free 5447K/10695K, external 17083K/17815K, paused 31ms
05-18 21:06:56.365: D/dalvikvm(6617): GC_EXTERNAL_ALLOC freed <1K, 50% free 5447K/10695K, external 17083K/17815K, paused 30ms
05-18 21:06:56.415: D/dalvikvm(6617): GC_EXTERNAL_ALLOC freed <1K, 50% free 5447K/10695K, external 17083K/17815K, paused 32ms
Run Code Online (Sandbox Code Playgroud)
它也在另一个2.2+手机(不是一个星系s2)上做同样的事情,所以总共在一部手机上没有GC呼叫,另外两个则发生这种情况.而且,OK手机的功能远不如Galaxy S2,并且由于在动画过程中缺少GC调用,仍然可以显示平滑的淡入淡出.有什么建议?感谢帮助.
它绝对不是由内存不足引起的,在此过程中Galaxy S2 5MB用于64MB堆.它似乎与实际的堆使用无关,它每次都会发生.
| 归档时间: |
|
| 查看次数: |
251 次 |
| 最近记录: |