λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

빈 ꡬ멍 μ±„μš°κΈ°

[Android] ComponentCallbacks2 λ¬Έμ„œ 읽기

https://developer.android.com/reference/android/content/ComponentCallbacks2

 

ComponentCallbacks2  |  Android Developers

android.net.wifi.hotspot2.omadm

developer.android.com

 

 

public interface ComponentCallbacks2 implements ComponentCallbacks

 

 

ν™•μž₯된 ComponentCallbakcs μΈν„°νŽ˜μ΄μŠ€κ³ , 보닀 μ„ΈλΆ„ν™”λœ λ©”λͺ¨λ¦¬ 관리λ₯Ό μœ„ν•œ μƒˆλ‘œμš΄ μ½œλ°±μ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€. 이 μΈν„°νŽ˜μ΄μŠ€λŠ” λͺ¨λ“  μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ΅¬μ„±μš”μ†Œ(Activity, Service, ContentProvider, Application)μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€.

 

ν˜„μž¬ μ‹œμŠ€ν…œ μ œμ•½μ„ 기반으둜 λ©”λͺ¨λ¦¬λ₯Ό μ μ§„μ μœΌλ‘œ ν•΄μ œν•˜κΈ° μœ„ν•΄μ„œλŠ” onTrimMemory(int)λ₯Ό κ΅¬ν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이 μ½œλ°±μ„ μ΄μš©ν•΄μ„œ λ¦¬μ†ŒμŠ€(λ©”λͺ¨λ¦¬)λ₯Ό ν•΄μ œν•˜λŠ” 것은 μ „λ°˜μ μœΌλ‘œ 더 응닡성이 쒋은 μ‹œμŠ€ν…œμ„ μ œκ³΅ν•˜κ³ , λ˜ν•œ μ‹œμŠ€ν…œμ΄ ν”„λ‘œμ„ΈμŠ€λ₯Ό 였래 μœ μ§€ν•΄μ„œ μ•±μ˜ μ‚¬μš©μž κ²½ν—˜μ— 직접적인 이점을 μ œκ³΅ν•©λ‹ˆλ‹€. 즉, 이 μ½œλ°±μ— μ˜ν•΄ μ •μ˜λœ λ©”λͺ¨λ¦¬ 레벨의 κΈ°μ€€μœΌλ‘œ λ¦¬μ†ŒμŠ€λ₯Ό 닀듬지(trim)μ•ŠμœΌλ©΄, μ‹œμŠ€ν…œμ€ κ°€μž₯ μ΅œκ·Όμ— μ‚¬μš©ν•œ (LRU) λ¦¬μŠ€νŠΈμ— ν”„λ‘œμ„ΈμŠ€κ°€ μΊμ‹œλ‘œ μ €μž₯λ˜μ–΄ μžˆλŠ” λ™μ•ˆ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ’…λ£Œν•  κ°€λŠ₯성이 더 높아지고, λ”°λΌμ„œ μ‚¬μš©μžκ°€ μ•±μœΌλ‘œ λŒμ•„μ˜¬ λ•Œ 앱이 λ‹€μ‹œ μ‹œμž‘ν•΄μ„œ λͺ¨λ“  μƒνƒœλ₯Ό 볡원해야 ν•˜λŠ” 것이 μš”κ΅¬λ©λ‹ˆλ‹€.

 

onTrimMemory(int)κ°€ μ œκ³΅ν•˜λŠ” 값듀은 λ©”λͺ¨λ¦¬ μ œν•œμ΄ 단일 μ„ ν˜• μ§„ν–‰μœΌλ‘œ λ‚˜νƒ€λ‚˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ©”λͺ¨λ¦¬ κ°€μš©μ„±μ— λŒ€ν•΄ λ‹€μ–‘ν•œ νƒ€μž…λ“€μ˜ λ‹¨μ„œλ“€μ„ μ œκ³΅ν•˜μ£ .

 

  • 앱이 μ‹€ν–‰ 쀑이면

1. TRIM_MEMORY_RUNNING_MODERTAE

단말이 λ©”λͺ¨λ¦¬κ°€ λΆ€μ‘±ν•œ μƒνƒœμ—μ„œ μ‹€ν–‰ν•˜κΈ° μ‹œμž‘ν•©λ‹ˆλ‹€. 앱은 μ‹€ν–‰ 쀑이고 μ’…λ£Œν•  수 μ—†μ£ . 

 

2. TRIM_MEMORY_RUNNING_LOW

단말이 λ©”λͺ¨λ¦¬κ°€ 훨씬 λΆ€μ‘±ν•œ μƒνƒœμ—μ„œ μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 앱은 μ‹€ν–‰ 쀑이고, μ’…λ£Œ ν•  μˆ˜λŠ” μ—†μœΌλ‚˜ (μ•±μ˜ μ„±λŠ₯에 μ§μ ‘μ μœΌλ‘œ 영ν–₯을 μ£ΌλŠ”) μ‹œμŠ€ν…œ μ„±λŠ₯ ν–₯상을 μœ„ν•΄μ„œ μ•ˆ μ“°λŠ” λ¦¬μ†ŒμŠ€λŠ” ν•΄μ œν•˜μ„Έμš”.

 

3. TRIM_MEMORY_RUNNING_CRITICAL

단말이 κ·Ήλ„λ‘œ λ©”λͺ¨λ¦¬κ°€ λΆ€μ‘±ν•œ μƒνƒœμ—μ„œ μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 앱은 아직 μ’…λ£Œ κ°€λŠ₯ν•œ ν”„λ‘œμ„ΈμŠ€λ‘œ μ—¬κ²¨μ§€μ§€λŠ” μ•ŠμœΌλ‚˜, λ§Œμ•½ 앱이 λ¦¬μ†ŒμŠ€λ₯Ό ν•΄μ œν•˜μ§€ μ•ŠμœΌλ©΄ μ‹œμŠ€ν…œμ€ λ°±κ·ΈλΌμš΄λ“œ ν”„λ‘œμ„ΈμŠ€λ₯Ό 죽일 κ²ƒμ΄κ³ μš”, λ”°λΌμ„œ μ„±λŠ₯ μ €ν•˜λ₯Ό 막기 μœ„ν•΄μ„œλŠ” μ§€κΈˆ μ€‘μš”ν•˜μ§€ μ•Šμ€ λ¦¬μ†ŒμŠ€λ“€μ„ ν•΄μ œν•΄μ•Ό ν•©λ‹ˆλ‹€. 

 

  • μ•±μ˜ κ°€μ‹œμ„±μ΄ λ°”λ€Œλ©΄

1. TRIM_MEMORY_UI_HIDDEN

λ‹Ήμ‹  μ•±μ˜ UIκ°€ 더 이상 보이지 μ•Šκ²Œ 되면, UIμ—μ„œλ§Œ μ‚¬μš©ν•˜κ³  있던 큰 λ¦¬μ†ŒμŠ€λ₯Ό ν•΄μ œν•˜κΈ° 쒋은 νƒ€μ΄λ°μž…λ‹ˆλ‹€.

 

  • μ•±μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ λ°±κ·ΈλΌμš΄λ“œ LRU λͺ©λ‘μ— μžˆλŠ” λ•Œμ—λŠ”

1. TRIM_MEMORY_BACKGROUND

μ‹œμŠ€ν…œμ€ λ©”λͺ¨λ¦¬κ°€ λΆ€μ‘±ν•œ μƒνƒœμ—μ„œ μ‹€ν–‰ν•˜κ³  있고, λ‹Ήμ‹ μ˜ ν”„λ‘œμ„ΈμŠ€λŠ”  LRU 리슀트의 μ‹œμž‘μ— κ°€κΉŒμ΄ μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ  μœ„ν—˜μ΄ 높지 μ•Šλ‹€κ³  해도, μ‹œμŠ€ν…œμ€ LRU 리슀 μ•ˆμ— μžˆλŠ” ν”„λ‘œμ„ΈμŠ€λ“€μ„ 이미 μ’…λ£Œμ‹œν‚€κ³  μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ ν”„λ‘œμ„ΈμŠ€κ°€ λͺ©λ‘μ— 남아 있고 μ‚¬μš©μžκ°€ μ•±μœΌλ‘œ λŒμ•„μ˜¬ λ•Œ λΉ λ₯΄κ²Œ μž¬κ°œν•˜κΈ° μœ„ν•΄μ„œ λ³΅κ΅¬ν•˜κΈ° μ‰¬μš΄ λ¦¬μ†ŒμŠ€λ₯Ό ν•΄μ œν•΄μ•Ό ν•©λ‹ˆλ‹€.

 

2.TRIM_MEMORY_MODERATE

μ‹œμŠ€ν…œμ€ λ©”λͺ¨λ¦¬κ°€ λΆ€μ‘±ν•œ μƒνƒœμ—μ„œ μ‹€ν–‰ν•˜κ³  있고 ν”„λ‘œμ„ΈμŠ€λŠ” LPU 리슀트의 쀑간에 κ°€κΉŒμ΄ μžˆμŠ΅λ‹ˆλ‹€. λ§Œμ•½ μ‹œμŠ€ν…œμ΄ λ©”λͺ¨λ¦¬ λΆ€μ‘±μœΌλ‘œ 더 μ œμ•½μ„ λ°›κ²Œ λœλ‹€λ©΄, λ‹Ήμ‹ μ˜ ν”„λ‘œμ„ΈμŠ€λŠ” μ’…λ£Œλ  수 μžˆμŠ΅λ‹ˆλ‹€. 

 

3.TRIM_MEMORY_COMPLETE

μ‹œμŠ€ν…œμ€ λ©”λͺ¨λ¦¬κ°€ λΆ€μ‘±ν•œ μƒνƒœμ—μ„œ μ‹€ν–‰ν•˜κ³  있고 ν”„λ‘œμ„ΈμŠ€λŠ” μ§€κΈˆ λ©”λͺ¨λ¦¬λ₯Ό λ³΅κ΅¬ν•˜μ§€ μ•ŠμœΌλ©΄ λ‹Ήμ‹ μ˜ ν”„λ‘œμ„ΈμŠ€λŠ” κ°€μž₯ λ¨Όμ € μ’…λ£Œλ  ν”„λ‘œμ„ΈμŠ€λ“€ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. μ•± μƒνƒœλ₯Ό μ œκ°œν•˜λŠ”λ°μ— μ€‘μš”ν•˜μ§€ μ•Šμ€ 것듀은 μ „λΆ€ λ‹€ ν•΄μ œν•΄μ•Ό ν•©λ‹ˆλ‹€.

 

주의 : μ‹œμŠ€ν…œμ΄ LRU 리슀트 μ•ˆμ˜ ν”„λ‘œμ„ΈμŠ€λ“œλ₯Ό μ’…λ£Œμ‹œν‚€κΈ° μ‹œμž‘ν•  λ•Œ, 주둜 상ν–₯μ‹μœΌλ‘œ μž‘μ—…μ΄ μ΄λ£¨μ§€μ§€λ§Œ, μ‹œμŠ€ν…œμ€ μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ 더 λ§Žμ€ λ©”λͺ¨λ¦¬λ₯Ό μ†ŒλΉ„ν•˜κ³  있고, μ’…λ£Œλœλ‹€λ©΄ 더 λ§Žμ€ λ©”λͺ¨λ¦¬λ₯Ό μ œκ³΅ν•  수 μžˆλŠ”μ§€μ— λŒ€ν•΄ κ³ λ €ν•©λ‹ˆλ‹€. λ”°λΌμ„œ LRU 리슀트 μ•ˆμ—μ„œ μ „λ°˜μ μœΌλ‘œ λ©”λͺ¨λ¦¬λ₯Ό 덜 μ†ŒλΉ„ν•  수둝, 리슀트 μ•ˆμ—μ„œ 남아 더 빨리 μž¬κ°œν•  κ°€λŠ₯성을 더 많이 κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. 

 

ν”„λ‘œμ„ΈμŠ€ 생λͺ…μ£ΌκΈ°μ˜ λ‹€μ–‘ν•œ 단계듀에 λŒ€ν•œ (λ°±κ·ΈλΌμš΄λ“œ LRU 리슀트 μ•ˆμ—μ„œ λ†“μ—¬μ§€λŠ” 것에 λŒ€ν•œ μ˜μ™€ 같은) 더 λ§Žμ€ μ •λ³΄λŠ” ν”„λ‘œμ„ΈμŠ€μ™€ μ“°λ ˆλ“œ λ¬Έμ„œμ— μ œκ³΅λ©λ‹ˆλ‹€.