0

30フレームでフレームアニメーションをやりたいです。同じための私のコードは次のとおりです。

animation = new AnimationDrawable();
    for (int i= 1; i<= 30 ; i++){
        frame=  "xyz"+ i;
        resource    =   this.getResources().getIdentifier(frame, "drawable", "com.example.frameanimation");
        Log.e("123", "resource value======"+resource+"============"+frame);

        animation.addFrame(getResources().getDrawable(resource), 50);


            System.gc();

    }

    animation.setOneShot(false);

このコードにはSystem.gc();. これは、メモリ関連の問題を最適化するのに役立ちますか。または、メモリ関連の問題が発生する可能性があります。これは、フレーム アニメーション中にメモリに存在する 30 枚の画像が破棄されるということですか?

これを最適化する他の方法はありますか?提案してください。

前もって感謝します。

4

1 に答える 1

1

System.gc() は、ガベージ コレクターへのヒ​​ントです。これは、このコード行を実行した後、ガベージ コレクターがガベージを収集しない可能性があることを意味します。

これを最適化する良い方法は、ロードしているドローアブルを最適化することです。画面の DPI に基づいてロードできます。小さな画面内に大きな画像をロードするのは役に立ちません。画像読み込みリンクに関するこの記事を読んでください。

メイン画像を背景として使用し、アニメーション内のアニメーション部分のみを使用することもできます。

または、SoftReference を使用してみてください。ヒープ メモリの問題が発生した場合、少なくともこの問題は解決されます。

于 2013-03-18T05:01:52.657 に答える