¸Þ¸ð¸® ´©Ãâ ÇÇÇϱâ
T-Mobile G1°ú °°Àº ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀ̼ǵéÀº Heap ¸Þ¸ð¸® ¿µ¿ªÀÌ
16MB ·Î Á¦ÇѵǾî ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¸ð¸®´Â ÇÚµåÆù¿¡´Â ¸¹Àº ¾çÀÇ
¸Þ¸ð¸®ÀÌÁö¸¸ °³¹ßÀÚ°¡ ÇÊ¿ä·Î Çϴ°Ϳ¡´Â Å©°Ô ¸ø ¹ÌĨ´Ï´Ù.
ÀÌ ¸Þ¸ð¸®¸¦ ¸ðµÎ ´Ù »ç¿ëÇÒ °èȹÀÌ ¾ø´Ù°í ÇÏ´õ¶óµµ °³¹ß½Ã¿¡´Â
ÀÌ ¿µ¿ªÀ» ÃÖ¼ÒÇÑÀ¸·Î »ç¿ëÇؼ ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ǵéÀÌ Kill ´çÇÏÁö
¾Ê°í ¿î¿ëµÉ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù. ¾Èµå·ÎÀ̵尡 ´õ ¸¹Àº ¾ÖÇø®ÄÉÀ̼ÇÀ»
¸Þ¸ð¸®¿¡ »óÁÖ½ÃÅ´À¸·Î¼ »ç¿ëÀÚ´Â ¾ÖÇø®ÄÉÀ̼ǰ£¿¡ ´õ ºü¸¥ ÀüȯÀ»
ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Èµå·ÎÀ̵带 °³¹ß ÇÒ ¶§¿¡ ¸Þ¸ð¸®ÀÇ ´©ÃâÇö»óÀº ´ëºÎºÐÀÇ
°æ¿ì¿¡ °°Àº ½Ç¼ö¶§¹®¿¡ ÀϾ´Ï´Ù.
Áï, Context¿¡ ¿À·£½Ã°£ Áö¼ÓµÇ´Â ÂüÁ¶¸¦ Çϱ⠶§¹®ÀÔ´Ï´Ù.
¾Èµå·ÎÀ̵忡¼ Context´Â ¾ÆÁÖ ´Ù¾çÇÑ ÀÛ¾÷À» ´ã´çÇϴµ¥ ´ëºÎºÐÀº
¸®¼Ò½ºÀÇ Á¢±Ù°ú ·ÎµåÇϴµ¥ »ç¿ëµË´Ï´Ù. ¶§¹®¿¡ ¸ðµç À§Á¬Àº »ý¼ºÀÚ¿¡¼
Contextº¯¼ö¸¦ ¹Þ½À´Ï´Ù. ÀϹÝÀûÀÎ ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀ̼ÇÀÇ °æ¿ì¿¡
Context´Â µÎ Á¾·ù·Î ±¸ºÐµË´Ï´Ù. Activity¿Í ApplicationÀÌ ±×°ÍÀε¥
°³¹ßÀÚ´Â º¸Åë Activity¸¦ Ŭ·¡½º¿¡ »ó¼Ó¹Þ°í Context°¡ ÇÊ¿äÇÑ
¸Þ¼µå¸¦ »ó¼ÓÇÕ´Ï´Ù. ¿¹¸¦ Çѹø º¸°Ú½À´Ï´Ù.
01.
@Override
02.
protected
void
onCreate(Bundle state) {
03.
super
.onCreate(state);
04.
05.
TextView label =
new
TextView(
this
);
06.
label.setText(
"Leaks are bad"
);
07.
08.
setContentView(label);
09.
}
À§ÀÇ ÄÚµå´Â View°¡ Àüü Activity¸¦ ÂüÁ¶ÇÏ°í ÀÖ°í µû¶ó¼ Activity°¡
Æ÷ÇÔÇÏ´Â ÀÚ·áµµ ÂüÁ¶ÇÏ°í ÀÖ½À´Ï´Ù. º¸Åë ÀÌ ÀÚ·á´Â ViewÀÇ °èÃþ°ú
¸ðµç ¸®¼Ò½º¸¦ Æ÷ÇÔÇÕ´Ï´Ù. µû¶ó¼ Context¸¦ ´©ÃâÇÑ´Ù¸é (¿©±â¼
´©ÃâÀ̶ó´Â ¶æÀº Context¿¡ °è¼Ó ÂüÁ¶¸¦ Çϱ⠶§¹®¿¡ Garbage Collector°¡
Á¤¸®ÇÏ´Â °ÍÀ» ¹æÁö ÇÑ´Ù´Â ¶æÀÔ´Ï´Ù.) ¸¹Àº ¾çÀÇ ¸Þ¸ð¸®¸¦ ´©ÃâÇÏ°Ô µË´Ï´Ù.
ÁÖÀÇ ÇÏÁö ¾ÊÀ¸¸é Àüü ActivityÀÇ ¸Þ¸ð¸®°¡ ´©ÃâµÉ ¼ö ÀÖ½À´Ï´Ù.
½ºÅ©¸°ÀÇ Orientation(¹æÇâ Áï, Landscape¿Í Portrait)ÀÌ ¹Ù²î°Ô µÇ¸é
½Ã½ºÅÛÀº Default ¼³Á¤¿¡ µû¶ó ÇöÀç Activity¸¦ Æı«ÇÏ°í ±× »óŸ¦
À¯ÁöÇÏ¸é¼ »õ·Î¿î Activity¸¦ »ý¼ºÇÕ´Ï´Ù. ±×·¸°Ô ÇÏ´Â µ¿¾È ¾Èµå·ÎÀ̵å´Â
¾ÖÇø®ÄÉÀ̼ÇÀÇ ¸®¼Ò½º·ÎºÎÅÍ UI¸¦ ´Ù½Ã ·ÎµåÇÕ´Ï´Ù. ¸¸¾à¿¡ ¾ÖÇø®ÄÉÀ̼ÇÀ»
°³¹ß ÇÒ ¶§ Å« »çÀÌÁîÀÇ ºñÆ®¸ÊÀ» »ðÀÔÇϴµ¥ Orientation(¹æÇâ)¿¡ µû¶ó
°è¼Ó ·ÎµåÇÏ°í ½ÍÁö ¾Ê´Ù¸é °¡Àå ½¬¿î ¹æ¹ýÀº ¾Æ·¡ÀÇ Äڵ忡¼ º¸ÀÌ´Â ¹Ù¿Í °°ÀÌ
static Çʵ忡 ³Ö°í »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.
Äڵ带 º¸½ÃÁÒ.
01.
private
static
Drawable sBackground;
02.
03.
@Override
04.
protected
void
onCreate(Bundle state) {
05.
super
.onCreate(state);
06.
07.
TextView label =
new
TextView(
this
);
08.
label.setText(
"Leaks are bad"
);
09.
10.
if
(sBackground ==
null
) {
11.
sBackground = getDrawable(R.drawable.large_bitmap);
12.
}
13.
label.setBackgroundDrawable(sBackground);
14.
15.
setContentView(label);
16.
}
¸ÕÀú À§ÀÇ Äڵ忡¼ ù¹ø° Orientation(¹æÇâ) Àüȯ½Ã¿¡ ¸¸µé¾îÁö´Â
Activity¿¡¼ ¸Þ¸ð¸® ´©ÃâÀÌ ¹ß»ýÇÕ´Ï´Ù. DrawableÀÌ View¿¡ Àü°³µÇ¸é
View´Â Drawable¿¡ ÄݹéÇÔ¼ö·Î ¼³Á¤µË´Ï´Ù. Áï, DrawableÀº TextView¿¡
ÂüÁ¶ÇÏ°í ÀÖ°í TextView ÀÚ½ÅÀº Activity(Context)¸¦ ÂüÁ¶ÇÏ°í ÀÖÀ¸¸ç
Activity´Â »ç½Ç»ó ¸ðµç °ÍÀ» ÂüÁ¶ÇÏ°í ÀÖ½À´Ï´Ù. (Äڵ忡 µû¶ó ´Ù¸§)
À§ÀÇ ¿¹Á¦´Â ContextÀÇ ¸Þ¸ð¸® ´©ÃâÀÇ ¾ÆÁÖ °£´ÜÇÑ »ç·Ê·Î ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡¼´Â
Home Screen's Source Code(ÇÁ·ÎÁ§Æ® ³»¿¡ unbindDrawables() ¸Þ¼µå Âü°í)
¿¡¼ ¾î¶² ½ÄÀ¸·Î ¸Þ¸ð¸® ´©ÃâÀÌ ÀϾ´ÂÁö È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Èï¹Ì·Ó°Ôµµ Context¿¡ °ü·ÃÇÑ ¸Þ¸ð¸® ´©Ãâ »ç·Ê´Â ¾ó¸¶µçÁö ÀÖ°í Á¤µµ¿¡ µû¶ó
½É°¢Çϱ⵵ ÇÕ´Ï´Ù. ÀÌ·± °æ¿ì´Â »ç¿ë°¡´É ¸Þ¸ð¸® ¿µ¿ªÀÌ ºñ±³Àû »¡¸® ¼ÒÁøµË´Ï´Ù.
Context ¸Þ¸ð¸® ´©ÃâÀ» ÇÇÇÏ´Â ¹æ¹ýÀ¸·Î´Â µÎ°¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.
°¡Àå È®½ÇÇÑ ¹æ¹ýÀº Context »ç¿ë¹üÀ§¸¦ Á¦ÇÑµÈ ¹üÀ§ ¾ÈÀ¸·Î ÇÑÁ¤ÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.
À§¿¡¼ º¸¿©µå¸° ¿¹Á¦ Äڵ忡¼´Â static ÂüÁ¶¸¦ »ç¿ëÇßÁö¸¸ À̳ÊŬ·¡½º(Inner Class)
¿¡¼ ¹Ù±ùŬ·¡½º(Outer Class)¸¦ ¾Ï¹¬ÀûÀ¸·Î ÂüÁ¶ÇÏ´Â °ÍÀÌ À§ÇèÇÑ °ÍÀÓÀ» º¸¿´½À´Ï´Ù.
µÎ¹ø° ¹æ¹ýÀº Application Context¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.
ÀÌ ¹æ¹ý¿¡¼ Context´Â ¾×ƼºñƼ°¡ »ì¾ÆÀÖ´Â µ¿¾ÈÀº Áö¼ÓµÇ¸é¼µµ ActivityÀÇ »ý¸íÁÖ±â
¿Í´Â º°°³ÀÇ ¼ö¸íÀ» °®½À´Ï´Ù. °³¹ß½Ã¿¡ ¿À·£½Ã°£ »ì¾ÆÀÖ¾î¾ß ÇÒ Context°¡ ÇÊ¿äÇÑ
Object°¡ ÇÊ¿äÇÏ´Ù¸é Application Object¸¦ ±â¾ïÇϽʽÿÀ.
Context.getApplicationContext() ¸Þ¼µå¿Í Activity.getApplication() ¸Þ¼µå¸¦
ÅëÇؼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸Þ¸ð¸® ´©Ãâ ¹æÁö¿¡ ´ëÇØ ¿ä¾àÇÏÀÚ¸é
- Context Activity ´ë½Å¿¡ Context ApplicationÀ» »ç¿ëÇÏ´Â ½À°üÀ» °¡ÁöÀÚ
Activity ¾ÈÀÇ Static ÀÌ ¾Æ´Ñ À̳ÊŬ·¡½º(Inner Class)¸¦ µÇµµ·Ï »ç¿ëÇÏÁö ¸»ÀÚ
Static ÀÌ³Ê Å¬·¡½º¸¦ »ç¿ëÇÏ°í ¾àÇÑ ÂüÁ¶´Â Activity ¾È¿¡ µÎµµ·Ï ÇÏÀÚ
ÀÌ ¹®Á¦¿¡ ´ëÇÑ ÇØ°áÃ¥Àº WeakReference¸¦ »ç¿ëÇÑ Static ÀÌ³Ê Å¬·¡½º¸¦ ÀÌ¿ëÇØ
¹Ù±ùŬ·¡½º(Outer Class)¸¦ ÂüÁ¶ÇÏ´Â °ÍÀÌ´Ù.
- Garbage Collector´Â ¸Þ¸ð¸® ´©Ãâ ¹æÁö¸¦ º¸ÀåÇÏÁö ¾Ê´Â´Ù.