0

ボタンのリストを含むメニューを使用してアプリケーションを開発しています。これらのボタンのいずれかをクリックすると、別のアクティビティ (ボタンごとに異なる画像を持つ同じアクティビティ) が開かれ、イメージビューが表示されます。問題は、別のボタン (新しい画像を開く) を数回クリックすると、アプリがクラッシュし、解決できないことです。何か助けはありますか?ありがとう。

4

1 に答える 1

1

その問題は、ビューで多くの画像を使用していて、メモリを決してクリーンアップしないためです。その後、新しい画像用のメモリがすぐになくなります。

その問題を解決する 1 つの形式は、破棄とアクティビティのたびにメモリをクリーニングすることです。メモリを消去するために、アクティビティの次のメソッドをオーバーライドできます。

@Override
    public void unbindDrawables(View view) {
        if (view.getBackground() != null) {
            view.getBackground().setCallback(null);
        }
        if (view instanceof ViewGroup) {
            for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
                unbindDrawables(((ViewGroup) view).getChildAt(i));
            }
            ((ViewGroup) view).removeAllViews();
        }
    }

そのメソッドはビューをレビューします。あなたの場合、それらのビューは ImageView と ImageButton になります。最後に、メソッド onDestroy() でこのメソッドを呼び出す必要があります (そのメソッドもオーバーライドする必要があります)。

于 2013-07-26T18:07:36.207 に答える