5

私のアプリでは、次のような 2 つの子を持つ 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>  

次に、ギャラリーの画像を切り替えています (それぞれが約 800x600 の写真です)。

//(setup wanted images into ImageViews)
//then:
viewFlipper.setInAnimation(instance, R.anim.fade_in);
viewFlipper.setOutAnimation(instance, R.anim.fade_in);
viewFlipper.setDisplayedChild(nextIndex);

Android 2.3.4 ではすべてが期待どおりに動作しますが、2.3.5 フォン (galaxy S2) では、アニメーション中に dalvik が GC を数回呼び出します。System.gc を app のどこにも明示的に呼び出しません。

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

また、別の 2.2 以降の電話 (Galaxy S2 ではない) でも同じことを行うため、合計で 1 つの電話では GC 呼び出しがなく、他の 2 つの電話ではこれが発生します。また、OK phone は Galaxy S2 よりもはるかに強力ではありませんが、アニメーション中に GC 呼び出しがないため、スムーズなフェードインとアウトが表示されます。助言がありますか?手伝ってくれてありがとう。

Galaxy S2 では、このプロセス中に 64MB ヒープのうち 5MB が使用されます。実際のヒープ使用量とは無関係のようで、毎回発生します。

4

0 に答える 0