Home [TIL] 2023-03-22
Post
Cancel

[TIL] 2023-03-22

😲 였늘의 개발 일지


  • Android 13으둜 μ—…λ°μ΄νŠΈκ°€ λ˜λ©΄μ„œ λ³€κ²½λ˜λŠ” λ‚΄μš©μ— λŒ€ν•΄ μ‘°μ‚¬ν–ˆλ‹€. κ·Έ 쀑 ν•˜λ‚˜κ°€ 앱이 β€œrestricted” App Standby Bucket에 듀어갔을 λ•Œ λͺ‡λͺ‡ λ‹¬λΌμ§„λ‹€λŠ” μ μ΄μ—ˆλ‹€.

    • μš°μ„  App Standby Bucket은 앱이 μ–Όλ§ˆλ‚˜ μ΅œκ·Όμ— μ–Όλ§ˆλ‚˜ 자주 μ‚¬μš©λ˜μ—ˆλŠ”μ§€μ— κΈ°λ°˜ν•΄ μ‹œμŠ€ν…œμ΄ μ•±μ˜ λ¦¬μ†ŒμŠ€ μš”μ²­μ— μš°μ„ μˆœμœ„λ₯Ό μ •ν•˜λŠ” κΈ°λŠ₯이닀.
    • μš°μ„ μˆœμœ„λŠ” Active, Working set, Frequent, Rare, Restricted μ΄λ ‡κ²Œ 5가지가 μžˆλ‹€.
    • Android 13λΆ€ν„°λŠ” μ˜ˆμ™Έ μš”κ±΄μ„ μΆ©μ‘±ν•˜μ§€ μ•ŠλŠ” ν•œ, λ‹€μŒκ³Ό 같은 경우 μ‹œμŠ€ν…œμ€ 앱을 Restricted Bucket에 λ°°μΉ˜ν•œλ‹€.
      • μ‚¬μš©μžκ°€ 8μΌλ™μ•ˆ μ•±κ³Ό μƒν˜Έμž‘μš©μ„ ν•˜μ§€ μ•Šμ•˜μ„ 경우
      • 앱이 24μ‹œκ°„ λ™μ•ˆ κ³Όλ„ν•œ 개수의 λΈŒλ‘œλ“œμΊμŠ€νŠΈ λ˜λŠ” 바인딩을 ν˜ΈμΆœν•  경우
    • Restricted Bucket에 배치되면 λ‹€μŒ μ œν•œμ‚¬ν•­λ“€μ΄ 생긴닀.
      1. ν•˜λ£¨μ— ν•œ 번 Batched Sessionμ—μ„œ 10λΆ„ μ •λ„μ˜ μž‘μ—…μ„ μ‹€ν–‰ν•œλ‹€.
        • Batched Session은 μ—¬λŸ¬ μž‘μ—…μ„ ν•œ λ²ˆμ— μ‹€ν–‰ν•˜λŠ” 것을 λ§ν•œλ‹€. κ°œλ°œμžλŠ” μž‘μ—…μ„ κ·Έλ£Ήν™”ν•˜κ³ , μ‹œμŠ€ν…œμ— λŒ€ν•΄ μ‹€ν–‰ν•΄μ•Ό ν•˜λŠ” μž‘μ—…λ“€μ˜ 그룹을 μ •μ˜ν•˜μ—¬ μ•±μ˜ μž‘μ—…μ„ 일괄 μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν•œλ‹€. μ•ŒλžŒ, λ°±κ·ΈλΌμš΄λ“œ μž‘μ—…, 동기화 μž‘μ—… λ“± 이 Batched Session에 λ“€μ–΄κ°„λ‹€.
        • Restricted Bucket에 μžˆλŠ” μ•±μ˜ μž‘μ—…μ˜ 경우 κ·Έ 자체둜 μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€.
        • Restricted Bucket에 μžˆλŠ” μ•±μ˜ μž‘μ—…μ΄ μ‹€ν–‰λ˜λ €λ©΄ λ™μ‹œμ— μ‹€ν–‰ λ˜λŠ” λŒ€κΈ°μ€‘μΈ μž‘μ—…μ΄ ν•˜λ‚˜ 이상이어야 ν•œλ‹€. 고둜, Batched Session에 Restricted Bucket에 μžˆλŠ” μ•±μ˜ μž‘μ—… ν•˜λ‚˜ 뿐이라면 μ‹€ν–‰ν•  수 μ—†λ‹€.
      2. μš°μ„ μˆœμœ„κ°€ 높은 Bucket에 μžˆλŠ” 앱듀에 λΉ„ν•΄ 더 적은 expedited μž‘μ—…μ„ μ‹€ν–‰ν•œλ‹€.
        • expedited μž‘μ—…μ€ μ±„νŒ… μ•±μ—μ„œ λ©”μ‹œμ§€λ₯Ό λ³΄λ‚Έλ‹€κ±°λ‚˜ 이미지λ₯Ό μ „μ†‘ν•˜λŠ” μž‘μ—…μ΄λ‚˜, 금육 μ•±μ—μ„œ 결제λ₯Ό μ²˜λ¦¬ν•˜λŠ” μž‘μ—…μ²˜λŸΌ μ‚¬μš©μžμ—κ²Œ μ€‘μš”ν•˜κ³ , λ°±κ·ΈλΌμš΄λ“œμ—μ„œ λΉ λ₯΄κ²Œ μ‹€ν–‰λ˜κ³ , μ¦‰μ‹œ μ‹œμž‘λ˜λ©°, μ‚¬μš©μžκ°€ 앱을 닫아도 계속 μ‹€ν–‰λ˜μ–΄μ•Ό ν•˜λŠ” μž‘μ—…μ„ λ§ν•œλ‹€.
      3. 앱은 ν•˜λ£¨μ— ν•œ 개의 Alarm(Exact Alarm, Inexact Alarm)을 ν˜ΈμΆœν•  수 μžˆλ‹€.
        • Alarm은 JobSchedulerλ‚˜ WorkManagerλ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • μ‹œκ°„μ— μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ„λ‘ ν•˜λŠ” κΈ°λŠ₯이닀.
    • μ˜ˆμ™Έ μš”κ±΄
      • λ‹€μŒ κΆŒν•œ 쀑 ν•˜λ‚˜ 이상이 λΆ€μ—¬λœ μ•±
        • USE_EXACT_ALARM, SCHEDULE_EXACT_ALARM, ACCESS_BACKGROUND_LOCATION, CAMERA, RECORD_AUDIO
  • android:sharedUserId λΌλŠ” Manifest 속성을 μ•Œκ²Œ λ˜μ—ˆλ‹€.

    • sharedUserIdλŠ” λ‹€λ₯Έ μ•±μ—μ„œ ν•΄λ‹Ή μ•±μ˜ λ¦¬μ†ŒμŠ€(DB, SharedPrefernce λ“±)에 μ ‘κ·Όν•  수 μžˆλ„λ‘ ν•˜λŠ” κΈ°λŠ₯이닀.
    • 두 개의 μ•±μ˜ sharedUserId 값을 κ°™κ²Œ ν•˜μ—¬ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•  수 μžˆλ‹€.
    • Android 13λΆ€ν„°λŠ” ν•΄λ‹Ή 속성 λŒ€μ‹  android:sharedUserMaxSdkVersion μ†μ„±μ˜ 값을 32둜 μ„€μ •ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.
    • 이전에 이미 sharedUserId 속성을 μ‚¬μš©ν–ˆλ‹€λ©΄ μ§€μš°μ§€ 말고 κ·ΈλŒ€λ‘œ sharedUserMaxSdkVersion을 μΆ”κ°€ν•΄μ„œ μ“°λ©΄ λœλ‹€.
This post is licensed under CC BY 4.0 by the author.

[Android] Application Class

[Android] Permission