ฉันมีกิจกรรมที่โหลดภาพ png สามภาพ บน hdpi คือ 20kb, 148kb และ 190kb นี่คือรหัสที่ฉันกำลังโหลดด้วย:
Drawable bronzePlaque = resources.getDrawable(R.drawable.bronze_plaque);
Drawable silverPlaque = resources.getDrawable(R.drawable.silver_plaque);
Drawable goldPlaque = resources.getDrawable(R.drawable.gold_plaque);
ดูเหมือนว่าการโทรเหล่านั้นเพียงอย่างเดียวจะใช้เวลาประมาณ 500 มิลลิวินาที ซึ่งทำให้เกิดความล่าช้าอย่างเห็นได้ชัดเมื่อโหลดกิจกรรมนั้น
ฉันไม่แน่ใจว่าต้องใช้เวลานานแค่ไหนเนื่องจากขนาดของรูปภาพเทียบกับการรวบรวมขยะ / ขนาดฮีปที่เพิ่มขึ้น แต่ฉันต้องการลองทำอะไรบางอย่างเพื่อปรับปรุง มีวิธีที่ฉันสามารถให้เครื่องเสมือนขยายฮีปและรวบรวมขยะได้อย่างถูกต้องเพียงครั้งเดียวสำหรับการจัดสรรทั้งสามครั้งนั้นหรือไม่
นี่คือเอาต์พุต logcat สำหรับสามบรรทัดนั้น (และสำหรับระบบพิมพ์ getTimeInMillis
รอบๆ บรรทัดเหล่านั้น)
03-23 14:05:57.260: I/System.out(30302): time: 1395608757267
03-23 14:05:57.370: D/dalvikvm(30302): GC_FOR_ALLOC freed 39K, 4% free 7990K/8272K, paused 20ms, total 20ms
03-23 14:05:57.370: I/dalvikvm-heap(30302): Grow heap (frag case) to 8.968MB for 1188160-byte allocation
03-23 14:05:57.390: D/dalvikvm(30302): GC_FOR_ALLOC freed 1K, 4% free 9149K/9436K, paused 19ms, total 19ms
03-23 14:05:57.540: D/dalvikvm(30302): GC_FOR_ALLOC freed 1K, 4% free 9148K/9436K, paused 15ms, total 16ms
03-23 14:05:57.540: I/dalvikvm-heap(30302): Grow heap (frag case) to 10.245MB for 1340008-byte allocation
03-23 14:05:57.560: D/dalvikvm(30302): GC_FOR_ALLOC freed <1K, 3% free 10457K/10748K, paused 19ms, total 19ms
03-23 14:05:57.720: D/dalvikvm(30302): GC_FOR_ALLOC freed <1K, 3% free 10457K/10748K, paused 15ms, total 15ms
03-23 14:05:57.720: I/dalvikvm-heap(30302): Grow heap (frag case) to 11.482MB for 1297384-byte allocation
03-23 14:05:57.740: D/dalvikvm(30302): GC_FOR_ALLOC freed <1K, 3% free 11724K/12016K, paused 18ms, total 18ms
03-23 14:05:57.760: I/System.out(30302): time: 1395608757770
ฉันรู้ว่าหลังจากโหลดกิจกรรมนั้นแล้ว เมื่อโหลดกิจกรรมได้เร็วกว่ามากในภายหลัง ฉันควรโหลดรูปภาพเหล่านั้นหนึ่งครั้งในเวลาโหลดแอปเพื่อช่วยป้องกันไม่ให้ฮีปเติบโตหรือเก็บขยะอย่างเจ็บปวดหรือไม่ ฉันอยากให้มีความล่าช้าครึ่งวินาทีที่โหลดล่วงหน้ามากกว่าที่จะเกิดขึ้นเมื่อคลิกกิจกรรม