1

何もしないEditTextがいくつかあります。鮮明な画像を表示するために、すべてのリスナーとフィルターをスキップしました。EditText には次の構造があります。

EditText et1 = new EditText(this);
et1.setId(num+1); 
RelativeLayout.LayoutParams etp =  new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
etp.addRule(RelativeLayout.LEFT_OF,et2.getId());
etp.addRule(RelativeLayout.BELOW,et3.getId());
etp.setMargins(0, 0, 5, 5);
et1.setLayoutParams(etp);
et1.setBackgroundResource(R.drawable.someXMLDrawable);

RelativeLayout content = new RelativeLayout(this);
content.addView(et1);

EditText をクリックすると、ガベージ コレクターが実行されます。あるフィールドから別のフィールドをクリックすると、次の画像が表示されます。

D/dalvikvm(387): GC_CONCURRENT freed 1513K, 43% free 10451K/18055K, paused 1ms+3ms
I/dalvikvm-heap(387): Grow heap (frag case) to 13.731MB for 1190416-byte allocation
D/dalvikvm(387): GC_CONCURRENT freed 1525K, 43% free 10451K/18055K, paused 2ms+2ms
I/dalvikvm-heap(387): Grow heap (frag case) to 13.729MB for 1190416-byte allocation
D/dalvikvm(387): GC_CONCURRENT freed 1438K, 42% free 10540K/18055K, paused 2ms+2ms
I/dalvikvm-heap(387): Grow heap (frag case) to 13.723MB for 1190416-byte allocation
D/dalvikvm(387): GC_CONCURRENT freed 1436K, 42% free 10540K/18055K, paused 2ms+3ms
I/dalvikvm-heap(387): Grow heap (frag case) to 13.720MB for 1190416-byte allocation
D/dalvikvm(387): GC_CONCURRENT freed 1432K, 42% free 10540K/18055K, paused 1ms+3ms
I/dalvikvm-heap(387): Grow heap (frag case) to 13.721MB for 1190416-byte allocation
D/dalvikvm(387): GC_CONCURRENT freed 1435K, 42% free 10540K/18055K, paused 2ms+3ms
D/dalvikvm(278): GC_CONCURRENT freed 1839K, 63% free 12684K/33863K, paused 7ms+3ms
D/dalvikvm(190): GC_CONCURRENT freed 1652K, 74% free 14590K/54343K, paused 5ms+10ms
D/dalvikvm(190): GC_CONCURRENT freed 234K, 71% free 16243K/54343K, paused 9ms+19ms
I/dalvikvm-heap(190): Grow heap (frag case) to 29.055MB for 6553616-byte allocation
D/dalvikvm(190): GC_CONCURRENT freed 22K, 55% free 24826K/54343K, paused 9ms+20ms

それは正常な状況ですか?どうにか直せますか?

編集: ViewPager があります。フラグメントが含まれています。Fragments は空の RelativeLayout で構成されます。アプリが起動すると、どのボタンと編集テキストが動的に生成され、RelativeLayout に追加されるかに基づいて、JSNO 文字列を受け取ります。EditText または Button にはコンテキストが必要なため、関連するアクティビティ コンテキストを返す「getActivity()」を使用します。RelativeLayout からすべてのビューを削除して新しいビューを作成する必要がある場合があります。削除されたビューにはアクティビティへの参照があるため、GC でクリーンアップすることはできません。正確にはわかりません。別の質問です (誰かが答えを知っていれば、いいでしょう)聞く)。

そのため、コントロールは JSON 文字列から動的に生成され、正確な数はわかりません。それが私がやりたいことです。

問題は、なぜ EditText をクリックするたびに GC が起動するのかということです。

4

2 に答える 2