๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿค2024 ์•ˆ๋“œ๋กœ์ด๋“œ/โ˜€๏ธ ํ•˜๊ณ„ ์ธํ„ด ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ ๊ธฐ๋ก

6์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€

by hyeonha 2024. 12. 17.

๋ชฉ์ฐจ

8/5

  • ๋ฐ์ดํ„ฐ ์ธก์ • ์—๋Ÿฌ
    • ๋น„์ฝ˜, ์„ผ์„œ, ์œ„์น˜ ์„ธ ๊ฐ€์ง€์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค๊ฐ€ ๋™์‹œ์— ๋Œ์•„๊ฐ€๋ฉฐ ์–ดํ”Œ์ด ๋น„์ •์ƒ ์ข…๋ฃŒ๋˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ
      • Handler, Coroutine์„ ํ†ตํ•ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ
        • ์˜ˆ์ธก : ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์œผ๋กœ UI๊ฐ€ 5์ดˆ์ด์ƒ ๋ฉˆ์ถค์œผ๋กœ ์ธํ•œ ๊ฐ•์ œ ์ข…๋ฃŒ๋กœ ์—์ƒ..??(12/17)
    • ๋น„์ฝ˜ ๋ฐ์ดํ„ฐ ์ธก์ •, ์œ„์น˜ ๋ฐ์ดํ„ฐ ์ธก์ •, ์„ผ์„œ ๋ฐ์ดํ„ฐ ์ธก์ • ์„œ๋ฒ„๋กœ์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์„ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์•„๋‹Œ IO ์ „์šฉ ์Šค๋ ˆ๋“œ์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์ฝ”๋“œ ์ „์ฒด ์ˆ˜์ •
  • ์ด๋ฅผ ํ†ตํ•ด ์•ฑ์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๋Š” ANR ๋ฌธ์ œ ํ•ด๊ฒฐ

8/6

์—๋Ÿฌ ํ•ด๊ฒฐ

  • ์Šค๋ ˆ๋“œ ConcurrentModificationException ํ•ด๊ฒฐ
  • ๋ฐ์ดํ„ฐ ์ธก์ • ์—๋Ÿฌ ํ•ด๊ฒฐ

์„œ๋ฒ„ ๋ฐ์ดํ„ฐ ์ „์†ก ํ™•์ธ

 

ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐํ•ฉํ•ด์„œ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๋Š” ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณณ์€ object์ธ data manager

โŒ

object์—์„œ context๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ์ˆ˜ ์—†์Œ

โ†’ intent์—์„œ ๋ฐ›์€ ์ฃผ๊ธฐ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ ๋ถˆ๊ฐ€

โ†’ ์„œ๋น„์Šค์—์„œ ๋„˜๊ฒจ์ค€ ์ฃผ๊ธฐ๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Œ

โŒ

โ†’ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ถ€๋ถ„์„ ๋ณ„๋„์˜ ํด๋ž˜์Šค๋กœ ๋ถ„๋ฆฌ

โ†’ ์ธํ…ํŠธ๋ฅผ ํ†ตํ•ด ์ „์†ก ์ฃผ๊ธฐ ๋ณ€๊ฒฝ ์ ์šฉํ•ด๋ณด๊ธฐ !

โ†’ ์˜คํžˆ๋ ค ๋ฐ์ดํ„ฐ ๊ฐ ์š”์†Œ๋ฅผ ํด๋ž˜์Šค์— ๋˜ ๋„˜๊ฒจ์ค˜์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์Œ

์ตœ์ข… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๐Ÿ™Œ ์ฃผ๊ธฐ ์„ค์ • ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ dataManager ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ฒŒ ํ•จ

โ†’ ์ฃผ๊ธฐ ์„ค์ • ํ›„ ๋ฐ”๋กœ ๋„˜๊ฒจ๊ตฌ๊ธฐ

dataManager.setTransmissionInterval(interval = value)

์„œ๋ฒ„ ํ˜ธ์ถœ ์‹œ ๋ฐ์ดํ„ฐ ์ „์†ก ์ฃผ๊ธฐ ์ ์šฉ (1)

 

๋กœ๊ทธ์ธ ์‹œ ์†๋„ ์ง€์—ฐ ๋ฌธ์ œ

๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๊ณ  ํ™”๋ฉด ๋„˜์–ด๊ฐ€๊ธฐ๊นŒ์ง€ ์•ฝ 4์ดˆ ! ์ •๋„์˜ ์ง€์—ฐ์ด ๋ฐœ์ƒ

โ†’ ํ™”๋ฉด์—์„œ ์•„๋ฌด๋Ÿฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š์•„ ์ง„ํ–‰ ์ค‘์ด์ง€ ์ง„ํ–‰ ์ „์ธ์ง€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ˜ผ๋™์„ ์คŒ

  • ์„œ๋ฒ„ ํ˜ธ์ถœ ์ƒ์˜ ์ฒ˜๋ฆฌ
    • ์ฝ”๋ฃจํ‹ด์—์„œ ๋กœ๊ทธ์ธ ์š”์ฒญ1์ดˆ ์•ˆ์— ์„œ๋ฒ„ ์š”์ฒญ์ด ์ด๋ฃจ์–ด์ง
    • lifecycleScope.launch { login(id) }

  • UI ์ƒ์˜ ์ฒ˜๋ฆฌ
// ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ 
binding.loginButton.isEnabled = false
binding.loginButton.text = "๋กœ๊ทธ์ธ ํ•˜๋Š” ์ค‘.."

 

8/7

์•ฑ ์ข…๋ฃŒ ์—๋Ÿฌ ํ•ด๊ฒฐ

  • notification์ด ๊ตฌ์„ฑ๋˜์ง€ ์•Š๋Š” ์—๋Ÿฌ - ์ฑ„๋„ id ๋ณ€๊ฒฝ์„ ํ†ตํ•ด ํ•ด๊ฒฐ

๊ฐค๋Ÿญ์‹œ ์›Œ์น˜ : ์ˆ˜์ •๋œ ์„œ๋ฒ„ ์ ์šฉ ๋ฐ ๋กœ์ง ์ถ”๊ฐ€

  • ์‹ค๋‚ด, ์‹ค์™ธ ์žฅ์†Œ ๋ณ€๊ฒฝ์— ๋”ฐ๋ผ ๋น„์ฝ˜๊ณผ ์œ„์น˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ธก์ •๋˜์ง€ ์•Š์„ ๋•Œ์—๋„ ์„œ๋ฒ„์— ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ์Šคํฌ ์ œ๋กœ์ธก์— ์งˆ๋ฌธ ์ „๋‹ฌ ๋ฐ ์„œ๋ฒ„ ์ˆ˜์ • ํ™•์ธ
  • ์ˆ˜์ •๋œ ์„œ๋ฒ„๋ฅผ ์ ์šฉํ•˜์—ฌ ๋น„์ฝ˜, ์œ„์น˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ธก์ •๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์˜ ๋กœ์ง ์ถ”๊ฐ€
  • ์ˆ˜์ •๋œ ์„œ๋ฒ„์— ๋”ฐ๋ฅธ data model ๋ณ€๊ฒฝ
  • ๋ฐ์ดํ„ฐ ์ „์†ก api ์ˆ˜์ •
  • ๋น„์ฝ˜, ์œ„์น˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ๋กœ์ง ์ถ”๊ฐ€

๊ฐ ๋ฐ์ดํ„ฐ์˜ ์ธก์ •๊ณผ ์ˆ˜์‹  ์‹œ์  ์ฐจ์ด๋กœ ์ธํ•ด ์„œ๋ฒ„ ํ˜ธ์ถœ ์‹คํŒจ ๋ฌธ์ œ

  • ์„œ๋ฒ„ ํ˜ธ์ถœ ์ „ ๊ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์‹  ์—ฌ๋ถ€ ํ™•์ธ ๋กœ์ง ์ถ”๊ฐ€
  • ์ด๋กœ์ธํ•ด ์‹œ๊ฐ„์ ์ธ ์ง€์—ฐ์ด ๋ฐœ์ƒํ–ˆ์ง€๋งŒ ์„œ๋ฒ„ ํ˜ธ์ถœ ์ •ํ™•๋„ ์ƒ์Šน

์„œ๋ฒ„ ์ฃผ์†Œ๋Š” ๊ฐ€๋ฆฌ๊ธฐ ใ…Žใ…Ž

์ค‘๊ตญ์‚ฐ ๊ธฐ๊ธฐ : ์„œ๋ฒ„ ์—ฐ๋™ ๋ฐ ๋ฐ์ดํ„ฐ ์ธก์ • ํ™•์ธ

  • ์„œ๋ฒ„ ์—ฐ๋™
    • ๊ด€๋ฆฌ์ž ๋กœ๊ทธ์ธ ํ™•์ธ ์™„๋ฃŒ
    • ip ์ฃผ์†Œ ์ „์†ก ํ™•์ธ ์™„๋ฃŒ
  • ๋ฐ์ดํ„ฐ ์ธก์ •๋  ์ˆ˜ ์žˆ๋„๋ก ์ ์šฉ
    • ์œ„์น˜ ํ™•์ธ ์™„๋ฃŒ
    • ์‹ฌ๋ฐ•์ˆ˜ ํ™•์ธ ์™„๋ฃŒ
    • ์„ผ์„œ ํ™•์ธ ์™„๋ฃŒ
    • ๋น„์ฝ˜ ํ™•์ธ ์ค‘
  •  
728x90