Android-Interview-Study-2022
2022๋ 5์๋ฌ๋ถํฐ ๋ค์ ์์ ์์
Life-Cycle
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
์๋๋ก์ด๋ ์ฌ์ฉ์๊ฐ ์ฑ์ ํ์ํ๊ณ
, ๋๊ฐ๊ณ
, ๋ค์ ๋ค์ด์ฌ ๋
๋ฑ๋ฑ์ ์ํ ๋ณํ์ ๋ฐ๋ผ์ ์ด๋ฅผ ์ฑ์์ ์์์ฐจ๋ฆด ์ ์๊ฒ ์ ๊ณตํ๋ Callback
.
Activity
onCreate
:Activity
๊ฐ ์ต์ด ์์ฑ๋๊ณ , ํ์ํ ์์ ์ ์ด๊ธฐํ๋ฅผ ์ํํ๊ธฐ ์ํด ํธ์ถ๋จ
๋ง์ฝ A - > B ๊ฐ๋ค๊ฐ ๋ค์ B -> A ๋ก ์ด์
stack
์ผ๋ก ๋์์ค๋activity
์ผ ๊ฒฝ์ฐ,onCreate
๋์onRestart
๊ฐ ํธ์ถ๋จ
onStart
:Activity
๊ฐ ๋ณด์ฌ์ง๊ธฐ ์ํ ๋ชจ๋ ์์ ๋ค์ ์ด๊ธฐํ(onCreate
)๊ฐ ๋๋ฌ๊ณ , ์ํธ์์ฉ ํ๊ธฐ ์ ์ ํธ์ถ๋จonResume
:Activity
๊ฐ ์ฌ์ฉ์์ ์ํธ์์ฉ์ด ์์๋์ ๋ ํธ์ถ๋จonPause
: ๋ค๋ฅธActivity
๊ฐ ๋ณด์ฌ์ ธ์ ํ์ฌ์Activity
๊ฐ ๊ฐ๋ ค์ก์ ๋(๋ณด์ด์ง ์์ ๋) ํธ์ถ๋จonStop
:Activity
๊ฐ ๋ ์ด์ ๋ณด์ฌ์ง์ง ์์ ๋ ํธ์ถ๋จ
์ด๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ์ฌ ์ข ๋ฃ๋ ์์๋ ํธ์ถ๋์ง ์์ ์ ์์
๋ํ ์ด๋ ๋ค๋ฅธActivity
๋ค์ ์๋ช ์ฃผ๊ธฐ ์์ ์ด ๋๋์ผ ํธ์ถ๋จ
๋ง์ง๋ง์ผ๋ก ์ด ์ํ์์onSaveInstanceState()
๊ฐ ํธ์ถ๋จ
onDestroy
: ์์คํ ๋ฆฌ์์ค ์์(CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฑ๋ฑ)์ด ๋ถ์กฑํด์ ธ ์ฑ์ด ์ข ๋ฃ๋๊ฑฐ๋,finish()
์ฝ๋๋ฅผ ์คํํ์ ๋ ํธ์ถ๋จ
Foreground
ํ์ฌ Activity
๋ฐ์์ ์คํ๋๋ ๊ฒ
Background
ํ์ฌ Activity
์์์ ๋ค๋ฅธ ์์
๊ณผ ๋์์ ๋ค์์ ์คํ๋๋ ๊ฒ
์ฌ์ฉ์ค์ธ ์ฑ์ TopActivity
์ Life-Cycle
์ํ๋ ์ด๋ป๊ฒ ๋๋์?
์ฑ ์ฌ์ฉ ๋์ค์ ์นด์นด์คํก์ผ๋ก ๋ถํฐ ์๋ฆผ์ด ์ค๋ฉด,onPause
์ํ๊ฐ ๋จ
onRestart
๋ ์ธ์ ํธ์ถ๋๋์?
onStart
ํธ์ถ ์ ์, ๊ฐ๋ ค์ง Activity
๊ฐ ๋ค์ ๋ณด์ฌ์ง ๋ ํธ์ถ๋จ
Application
onCreate
: ๋ค๋ฅธ ํด๋์ค๋ค์ด ์คํ๋๊ธฐ ์ ์ ์ ์ผ ๋จผ์ ํธ์ถ๋จonLowMemory
: ์๋๋ก์ด๋์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๋ ํธ์ถ๋จonTrimMemory
: ์ฑ์ด ์ ์คํ๋๊ณ ์๋๋ฐ, ์๋๋ก์ด๋๊ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ์ฌ ํ์์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ฆฌ๊ฐ ํ์ํ ๋ ํธ์ถ๋จonTerminuate
: ์๋๋ก์ด๋ ์๋ฎฌ๋ ์ดํฐ ํ๊ฒฝ์์๋ง ์คํ๋๋ฉฐ, ์๋ฎฌ๋ ์ดํฐ๊ฐ ๊บผ์ก์ ๋ ํธ์ถ๋จonConfigurationChanged
: ์๋๋ก์ด๋๊ตฌ์ฑ์์
๊ฐ ๋ณ๊ฒฝ๋์์ ๋ ํธ์ถ๋จ
Layout
onAttachedToWindow
:View
๊ฐWindow
์ ์ฐ๊ฒฐ๋๋ฉด ํธ์ถ๋จ
Drawing
ํ ํ๋ฉด์ ์๊ณ ์๋ ๋จ๊ณ ->listener
์ค์ ๊ฐ๋ฅ
measure
onMeasure
:View
์Size
๋ฅผ ํ์ธํ๊ธฐ ์ํด ํธ์ถ๋จ
ViewGroup
์ผ ๊ฒฝ์ฐ ๊ณ์ํด์Child View
์ ๋ํSize
์ธก์ ์ ํ๊ณ , ๊ทธ์ ๋ํ ๊ฒฐ๊ณผ๋ก ์์ ์Size
๋ฅผ ๊ฒฐ์
layout
onLayout
:View
์Size
๋ฅผ ์ธก์ ํ์ฌposition
์ค์ ํ ํธ์ถ๋จdispatchToDraw
draw
onDraw
:View
๊ฐ ๊ทธ๋ ค์ง ์ค๋น๊ฐ ๋์์ ๋ ํธ์ถ๋จ
onDraw
๋ ์ฌ๋ฌ๋ฒ ํธ์ถ๋๋ฏ๋ก, ์ฌ๊ธฐ์๋๊ฐ์ฒด
๋ฅผ ๋ง๋ค๋ฉด ์๋จCanvas
๋ ๋ฌด์์ ๊ทธ๋ฆด์ง๋ฅผ ๋ด๋นํ๊ณ ,Paint
๋ ์ด๋ป๊ฒ ๊ทธ๋ฆด์ง๋ฅผ ๋ด๋นํจ
onDetechedFromWindow
View
๊ฐ Window
์์ ๋ถ๋ฆฌ๋ ๋ ํธ์ถ๋จ
๋ ์ด์
Drawing
ํView
๊ฐ ์์์ ์๋ฆผ -> ๋ชจ๋ ์์ ๋ค์ ์ ๋ฆฌํด์ผ ํ๋ ์๊ธฐ
onFinishInflate
View
์ ๊ฐ๊ฐ ๋๋ ํ ํธ์ถ๋จ
Layout
์ผ ๊ฒฝ์ฐ, ๋ชจ๋Child View
๊ฐ ์ถ๊ฐ ๋ ํ์ ํธ์ถ๋จ
MeasureSpec
MeasureSpec
์ parent
์์ child
์ผ๋ก ์ ๋ฌ๋๋ Layout
๋ค์ ์๊ตฌ ์ฌํญ์ ์บก์ถํํจ
MeasureSpec.EXACTLY
Parent View
๊ฐ Child View
์ ์ ํํ Size
๋ฅผ ๊ฒฐ์ ํจ.
Child View
์Size
์ ๊ด๊ณ์์ด ๋ฌด์กฐ๊ฑด ์ ํด์งSize
๋ก ์ค์ ํจ
MeasureSpec.AT_MOST
Child View
๋ ์ง์ ๋ Size
๊น์ง์ ์ํ๋ ๋งํผ Size
๋ฅผ ์ ํ ์ ์์
MeasureSpec.UNSPECIFIED
Parent View
๊ฐ Child View
์ Size
์ ๋ํด ์ ํ์ ๋์ง ์์
Child View
๋ ์ํ๋ ๋งํผ์Size
๋ฅผ ์ ํ ์ ์์
requestLayout()
๊ณผ invalidate()
์ ์ฐจ์ด์
requestLayout()
measure
๋ถํฐ Layout
์ ์ฌํธ์ถ
invalidate()
dispatchToDraw()
๋ถํฐ Layout
์ ์ฌํธ์ถ
Fragment
onAttach
:Fragment
๊ฐActivity
์attach
๋ ๋
argument
๋กContext
๊ฐ ๋ค์ด์ด
onCreate
:Fragment
๊ฐ ์์ฑ๋ ๋ ํธ์ถ๋๋ฉฐ ์ฌ์ฉ์interface
์ด๊ธฐํ์ ์ฌ์ฉ๋จ
UI
์ด๊ธฐํ๋ ํ ์ ์์
onCreateView
:Layout
์inflate
ํ๋ ๊ณณ
UI
์ด๊ธฐํ๋ฅผ ํ ์ ์์
onActivityCreated
:Activity
์Fragment
์View
๊ฐ ๋ชจ๋ ์์ฑ๋ ์ํ
UI
๋ณ๊ฒฝ ์์ ์ ํ๋ ๊ณณ
onStart
:Fragment
๊ฐ ๋ณด์ฌ์ง๊ธฐ ๋ฐ๋ก ์ ์ ํธ์ถ๋จonResume
:Fragment
๊ฐ ์ฌ์ฉ์์ ์ํธ ์์ฉํ๊ธฐ ๋ฐ๋ก ์ ์ ํธ์ถ๋จonPause
: ๋ค๋ฅธActivity
๊ฐ ๋ณด์ฌ์ง ๋ ํธ์ถ๋จ
Fragment
์Parent Activity
๊ฐ ์๋ ๋ค๋ฅธActivity
๊ฐForeGround
๋ก ๋์ค๊ฒ ๋ ๋ ํธ์ถ๋จ
๋ํBackStack
์ผ๋ก ๋ค์ด๊ฐ
onStop
: ๋ค๋ฅธActivity
๊ฐ ํ๋ฉด์ ์์ ํ ๊ฐ๋ฆผonDestroyView
:Fragment
์ ๊ด๋ จ๋View
๋ค์ด ์ ๊ฑฐ๋ ๋ ํธ์ถ๋จonDestroy
:Fragment
๊ฐ ์๋ฉธ๋ ๋ ํธ์ถ๋จonDetach
:Fragment
๊ฐActivity
๋ก ๋ถํฐ ํด์ ๋์ด์ง ๋
ViewHolder
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
Inflate
๋ฅผ ์ต์ํ ํ๊ธฐ ์ํด์ View
๋ค์ ๊ฐ ์์์ ๋ฐ๋ก ์ ๊ทผํ ์ ์๊ฒ ์ ์ฅํด๋๊ณ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฐ์ฒด
ListView
์์์ ViewHolder
ํจํด
ListView
๋ViewHolder
์ฌ์ฉ์ด ์ ํ์
getView
์์convertView
๊ฐnull
์ผ ๋๋ง ์ต์ด ํ ๋ฒinflate
ํ๊ณViewHolder
๋ฃฐ ์์ฑํด ๊ฐ ์์๋ฅผfindViewById
๋ก ์ฐ๊ฒฐ์์ผ ์ ์ฅํ๊ณconvertView
์tag
๋ก ์ ์ฅ์ํด- ๊ทธ๋ฆฌ๊ณ ๋ค์๋ถํฐ๋
ViewHolder
๋ฅผconvertView
์tag
๋ก ๋ถ๋ฌ์์ ์ฌ์ฌ์ฉํจ
RecyclerView
์์์ ViewHolder
ํจํด
ListView
์๋ ๋ฌ๋ฆฌ,RecyclerView
๋ViewHolder
์ ์ฌ์ฉ์ด ํ์์
createViewHolder
์์ ์๋ก์ดView
๋ฅผ ์์ฑํจ๊ณผ ๋์์ViewHolder
๋ฅผ ๋ง๋ค๊ณreturn
ํจonBindViewHolder
์์paramater
๋ก ์ ๊ณต๋ฐ์ViewHolder
์value
๋ฅผ ๋ณ๊ฒฝํจ
Task
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
์๋๋ก์ด๋ Stack
ํ์์ผ๋ก ์ฐจ๊ณก์ฐจ๊ณก ์์ด๋ Activity
๋ค์ ์งํฉ
task
์ ์์ด๊ธฐ ์์ํ ์ตํ์ activity
Root Activity : task
์ ๊ฐ์ฅ ์ต๊ทผ์ ์์ธ ์ต์์ activity
Top Activity : ๋ง์ฝ ์ด
task
์ ์์ด์ง ์๊ฒactivity
๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด,manifest
์ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํ๋ฉด ๋๋ค.
android:excludeFromRecents="true"
Affinity
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
์๋๋ก์ด๋ Activity
์คํ ์ ์ ๊ท task
์ ๋ง๋ค ๊ฒฝ์ฐ, ์ง์ ํ task
์ ์ด๋ฆ
์ด๋ Custom Affinity
์ ์ด๋ฆ์๋ ์ต์ ํ ๊ฐ ์ด์์ .
๊ฐ ๋ค์ด๊ฐ์ผ ํ๋ค.
Intent
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
Component
(Activity
, Service
, Broadcast Receiver
)๊ฐ์ ํต์ ์ ํ๊ธฐ ์ํ ๋ฉ์์ง
Intent Type
Explicit Intent
: ์์ํcomponent
์class-name
์ ์ง์
๋ช ์์ ์ธํ ๋
์ผ๋ฐ์ ์ผ๋ก ๋ณธ์ธ์ด ๋ง๋component
๋ฅผ ์คํํ ๋ ์ฌ์ฉ
EX)Intent(context, MainActivity::class.java)
Implicit Intent
: ํน์ component
์class-name
์์ด ์ด๋ ํ ์์ ์ ์ํํ ์ง๋ง ์ ์ธํจ
์์์ ์ธํ ๋
ํด๋นIntent
๋ฅผ ์ฒ๋ฆฌํ ์ ์๋component
๋ฅผsystem
์ด ํํฐ๋งํ์ฌ ์ํํ๊ฑฐ๋, ์ฌ์ฉ์์๊ฒ ์ ํํ๋๋ก ํจ
EX) ํด๋ฆญ
Intent ๊ตฌ์ฑ์์
๊ตฌ์ฑ์์ | ๋ด์ฉ |
---|---|
Component-Name |
์์ํ component ์ name Explicit Intent ์ Implicit Intent ์ ๊ตฌ๋ถ ์๋จ |
Action |
์ํํ ์์
์ ์ค๋ช
ํ๋ ๋ฌธ์์ด ์ผ๋ฐ์ ์ธ Action ์ Intent ์์ ์์๋ก ์ ์๋์ด ์์ |
Data |
์์
์ ์ํํ data ๋ฐ ํด๋น ๋ฐ์ดํฐ์ MIME ์ ํ์ ์ฐธ์กฐํ๋ Uri ๊ฐ์ฒด |
Category |
Intent ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ component ์ ์ข
๋ฅ์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์ ๋ฌธ์์ด |
Extras |
์์ฒญํ ์์
์ ์ํํ๊ธฐ ์ํด ํ์ํ ์ถ๊ฐ ์ ๋ณด๋ค์ ๋ด๊ณ ์๋ Key:Value ๊ฐ์ฒด |
Flags |
Intent ์ ๋ํ Meta-Data ๊ฐ์ ์ญํ |
MIME๋?
์ด ๋ฐ์ดํฐ๊ฐ ์ด๋ค ํ์์ ๋ฐ์ดํฐ์ธ์ง ์ค๋ช ํ๋ ๋ช ์นญ
ํ์ | ์ค๋ช | ์์ |
---|---|---|
text |
๋ชจ๋ ์ข ๋ฅ์ ํ ์คํธ | text/plane text/html |
image |
๋ชจ๋ ์ข ๋ฅ์ ์ด๋ฏธ์ง | image/gif image/png |
audio |
๋ชจ๋ ์ข ๋ฅ์ ์ค๋์ค | audio/midi audio/wav |
video |
๋ชจ๋ ์ข ๋ฅ์ ๋น๋์ค | video/webm video/ogg |
application |
๋ชจ๋ ์ข ๋ฅ์ ๋ฐ์ดํฐ | application/xml application/pdf |
๋ ๋ง์ ์ ๋ณด) [๋ฐฉ๋ฌธ]
Pending Intent
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
๋ค๋ฅธ Process
(Application
)์์ ๊ถํ์ ํ๊ฐํ์ฌ ๊ฐ์ง๊ณ ์๋ Intent
๋ฅผ ๋ณธ์ธ Process
์์ ์คํํ๋ ๊ฒ ์ฒ๋ผ ํด์ฃผ๋ ๊ฒ
EX)
Notification
์ผ๋ก ์์ ์ ์ํํ ๋PendingIntent
๋ฅผ ์ฌ์ฉํ๋ค.Notification
์NotifcationManager
๋ผ๋ ๋ค๋ฅธprocess
์์ ์คํ๋๊ธฐ ๋๋ฌธ.
Call by Value
/Call by Reference
/Call by Assignment
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
ํจ์์ ํธ์ถ ๋ฐฉ์
CbV
ํจ์์ ๊ฐ์ ๋ณต์ฌํด์ ์ ๋ฌํ๋ ๋ฐฉ์
ํจ์์ ์ธ์๋ก ์ ๋ฌ๋๋ ๋ณ์๋ฅผ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ๋ณต์ฌํด์ ์คํํจ.
์ฆ, ํจ์์ ์ฌ์ฉ๋๋ ๋งค๊ฐ๋ณ์๋ค์ ๋ณ๋์ scope
๋ฅผ ๊ฐ์ง๋ฉฐ ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๊ฟ๋ ํจ์๋ก ์ ๋ฌํ ์๋ ๋ณ์์ ๊ฐ์ ๋ฐ๋์ง ์์.
CbR
ํจ์์ ๊ฐ์ ์ฃผ์๊ฐ์ ์ ๋ฌํ๋ ๋ฐฉ์
ํจ์์ ์ธ์๋ก ์ ๋ ๋๋ ๋ณ์๋ฅผ ๋ณ์์ ์ฃผ์๊ฐ์ผ๋ก ๋ฐ๊ฟ์ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํจ.
์ฆ, ํจ์๋ก ์ ๋ฌ๋๋ ๋งค๊ฐ๋ณ์๋ค๊ณผ ์๋์ ๋ณ์๋ค๊ณผ ๋์ผ scope
๋ฅผ ๊ฐ์ ธ์ ํจ์์ ๋งค๊ฐ๋ณ์ ๊ฐ์ด ๋ฐ๋๋ฉด ์๋ ๋ณ์์ ๊ฐ๋ ๋ฐ๋.
CbA
์ ๋ฌ๋๋ ๊ฐ์ฒด์ ๋ฐ๋ผ ์ฐธ์กฐ๋ฐฉ์์ด ๊ฒฐ์ ๋๋ ๋ฐฉ์
Mutable Object
๋ CbR
์ ๋ฐ๋ฅด๊ณ , Immutable Object
๋ CbV
๋ฅผ ๋ฐ๋ฅธ๋ค.
Java
๋ CbV
/CbR
/CbA
์ค ์ด๋ค๊ฒ์ธ์ง ์ค๋ช
ํ์์ค
Call by Value
๋ฅผ ๋ฐ๋ฆ
๋๋ค.
Java
์ ์๋ฃํ์ ์ค๋ช
ํ์์ค
Primitive Type
(์์ ์๋ฃํ)
- Boolean Type
*boolean
Numeric Type
2-1.Integral Type
*Integer Type
:short
,int
,long
*Floating Type
:float
,double
2-2.Character Type
:char
์๋ฃํ์ ๊ธธ์ด๊ฐ ํญ์
๊ณ ์ ์
์
๋น๊ฐ์ฒด
ํ์ -> ์ฆnull
์ ๊ฐ์ง ์ ์์.
Reference Type
(์ฐธ์กฐ ์๋ฃํ)
Class Type
*String Class
*Wrapper Class
*void
์Wrapper Class
๋Void
Interface Type
Array Type
Enum Type
etc...
๊ธฐ๋ณธ์ ์ผ๋ก
Object
๋ฅผ ์์๋ฐ์ผ๋ฉดReference Type
์ด ๋จ
๋ํ ์ ์ธํ ์๋ฃํ์ดPrimitive Type
์ด ์๋๋ฉดReference Type
์ด ๋จ
String
vs StringBuilder
vs StringBuffer
String
๊ธฐ๋ณธ์ ์ผ๋ก immutable
(๋ถ๋ณ
)์ด๋ค.
์ฆ, ๊ฐ์ด ๋ฐ๋๊ฒ ๋๋ฉด ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ์์ญ์ ๊ฐ๋ฅดํค๋ ์๋ก์ด ๋ณ์๋ฅผ ๋ง๋ ๋ค.
๊ฐ์ด ๋ฐ๋๊ธฐ ์ ์ด์ ๋ณ์๋ Garbage
๋ก ๋จ์์๋ค๊ฐ GC
(Garbage Collection
)์ ์ํด ์ฌ๋ผ์ง๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ ๋ ๋๊ธฐํ
๊ฐ ๊ฐ๋ฅํ๋ค.
๋ฌธ์์ด ์ฐ์ฐ์ด ์ ๊ณ
๋ฉํฐ์ฐ๋ ๋
์ผ ๊ฒฝ์ฐ ์ฌ์ฉ
StringBuffer
๊ธฐ๋ณธ์ ์ผ๋ก mutable
์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ ๋ ๋๊ธฐํ
๊ฐ ๊ฐ๋ฅํ๋ค.
๋ฌธ์์ด ์ฐ์ฐ์ด ๋ง๊ณ
๋ฉํฐ์ฐ๋ ๋
ํ๊ฒฝ์ผ ๊ฒฝ์ฐ ์ฌ์ฉ
StringBuilder
๊ธฐ๋ณธ์ ์ผ๋ก mutable
์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ ๋ ๋๊ธฐํ
๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
๋ฌธ์์ด ์ฐ์ฐ์ด ๋ง๊ณ
๋จ์ผ์ฐ๋ ๋
์ด๊ฑฐ๋,๋๊ธฐํ
๋ฅผ ๊ณ ๋ คํ์ง ์๋ ํ๊ฒฝ์ผ ๋ ์ฌ์ฉ
์ ๋ฆฌ
๊ตฌ๋ถ | String |
StringBuffer |
StringBuilder |
---|---|---|---|
Memory |
String pool |
Heap |
Heap |
Modifiable |
No | Yes | Yes |
Thread-Safe |
Yes | Yes | No |
Synchronized |
Yes | Yes | No |
Performance |
Fast | Slow | Fast |
์๋๋ก์ด๋ 4๋ ์ปดํฌ๋ํธ์ ๋ํ์ฌ ์ค๋ช ํ์์ค
Intent |
Description |
---|---|
Activity |
์ฌ์ฉ์์ ์ํธ์์ฉ ํ๋ interface |
Service |
๋ฐฑ๊ทธ๋ผ์ด๋ ์ฒ๋ฆฌ์ฉ ์ฌ์ฉ์์ ์ง์ ์ํธ์์ฉ์ ํ์ง ์๋๋ค. |
Broadcast Receiver |
์๋๋ก์ด๋์์ ๋ฐ์ํ๋ ๊ฐ์ข
event ๋ฅผ ๋ฐ์์ด์์คํ ์์ ์์๋จ |
Content Provider |
๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ค๋ฅธ ์ฑ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณต ๋ฐ์ดํฐ ๊ณต์ ๋ฅผ ์ํด ํ์คํ๋ SQLite interface ์ฌ์ฉ (๋์ฉ๋ ๊ฐ๋ฅ) |
์๋๋ก์ด๋ 4๋ ์ปดํฌ๋ํธ๋
Intent
์์ฑ์ ํฌํจ๋๋ค.
Manifest
์ ๋ํด ์ค๋ช
ํ์์ค
Manifest
(๋งค๋ํ์คํธ
)๋ Application
์ ๋ํ ๊ฐ์ข
์ ๋ณด๋ฅผ ๊ธฐ๋กํ๋ ํ์ผ์ด๋ค.
Tag | Description |
---|---|
<Manifest> |
Application ์ ๋ํ ์ ๋ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ์ํ๋ค.EX) ๋ฒ์ ์ฝ๋ |
<application> |
Application ์ ์ด๋ฆ, ์์ด์ฝ๋ฑ์ ์ ์ํ๋ค. |
<activity> |
Application ์์ ์ฌ์ฉ๋ Activity ๋ค๋ฅผ ์ ์ํ๋ค. |
<service> |
Application ์์ ์ฌ์ฉ๋ service ๋ค์ ์ ์ํ๋ค. |
<provider> |
Application ์์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ค์ ๋ค๋ฅธ Application ์ผ๋ก ๊ณต์ ํ ์ ์๊ฒ ํด์ฃผ๋ Content-Provider ๋ค์ ์ ์ํ๋ค. |
<receiver> |
Application ์์ ์ฌ์ฉ๋ Broadcast-Receiver ๋ฅผ ์ ์ํ๋ค. |
<uses-permission> |
Application ์์ ์ฌ์ฉ๋ permission ๋ค์ ์ ์ํ๋ค. |
<uses-library> |
Application ์์ ์ฌ์ฉ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ ์ํ๋ค. |
<uses-sdk> |
Application ์์ ์ต์๋ก ํ์๋ก ํ๋ SDK ๋ฒ์ ์ ์ ์ํ๋ค. |
Inflate
์ ๋ํด ์ค๋ช
ํ์์ค
XML
์ ์ ์๋์๋ View
๋ฅผ ์ค์ View
๊ฐ์ฒด๋ก ๋ง๋๋ ์ญํ ์ ์ํํ๋ค.
JVM
/DVM
/ART
์ ๋ํด ์ค๋ช
ํ์์ค
JVM
ByteCode
->interpret
-> ๊ฐOS
์ ๋ง๋ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญ -> ์คํ
์ฅ์ : OS
์ ๊ตฌ์ ๋ฐ์ง ์๊ณ , ํด๋น OS
์ ๋ง๋ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญ๋จ
๋จ์ : Native
์ธ์ด๋ค์ ๋นํด ์๋๊ฐ ๋๋ฆผ
DVM
dex-file
์Dalvik Machine
์์ ์ฌ๋ฆฌ๋ ๋ฐฉ์
ByteCode
-> interpret
-> ์คํ -> Native
์ฝ๋๋ก ๋ณํ(JIT-compile
)
License
๋ฌธ์ ๋ก JVM
๋์ Java
์ฝ๋๋ฅผ ์ด์ฉํ ์ ์๊ฒ ๊ฐ๋ฐ๋จ
์ฅ์ : OS
์ ๊ตฌ์ ๋ฐ์ง ์๊ณ , ํด๋น OS
์ ๋ง๋ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญ๋จ
๋จ์ : ์ฑ๋ฅ๊ณผ ๋ฐฐํฐ๋ฆฌ์ ์์ข์, JIT-compile
๋ ์ฝ๋๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋์
JIT-compile
์คํ์์ ์ ์์ค์ฝ๋๋ฅผ ๋ฒ์ญํจ
๋ฐ๋ผ์ ์ค์น๋ ๋น ๋ฅด์ง๋ง, ์คํ์์ ์ ๋๋ฆฌ๊ฒ ๋จ
๋ํ ๋ฒ์ญํ ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ ์คํ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ๋จน์
ART
Machine
์์์OAT-file
์ ๋๋ฆฌ๋ ๋ฐฉ์VM
์ด ์๋runtime
์ ์ฌ์ฉ๋จ
์ฑ์ ์ค์นํ ๋ ์์ ํ native
์ฝ๋๋ก ๋ณํ๋์ด ์ค์น๋จ(AOT-compile
)
์ฅ์ : ์ฝ๋ interpret
๋ฐ JIT-compile
์ ์ ๊ฑฐํ์ฌ ์ฑ๋ฅ์ด ํฅ์๋จ
๋จ์ : ์ค์น์์ ์ ์ฝ๋๋ฅผ ๋ฒ์ญํ์ฌ ์ค์น๊ฐ ๋๋ฆฌ๊ณ , ํ์ผ์ ๋ฐ๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ฉ๋์ด ์ปค์ง
AOT-compile
์ค์น์์ ์ ์์ค์ฝ๋๋ฅผ ๋ฒ์ญํจ
๋ฐ๋ผ์ ์ค์น๋ ๋๋ฆฌ๊ณ , ๋ฒ์ญ๋ ์์ค์ฝ๋๋ฅผ ๋ฐ๋ก ํ์ผ๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ฉ๋์ ๋ง์ด ๋จน์
ํ์ง๋ง ์คํ์์ ์ ๋ฏธ๋ฆฌ ๋ฒ์ญํ ํ์ผ์ ์คํํ๋ฏ๋ก ์คํ์๋๋ ๋น ๋ฆ
Android
๋ JVM
/DVM
/ART
์ค ์ด๋๊ฒ์ธ์ง ์ค๋ช
ํ์์ค
KitKat
) ์ด์
Android 4.4 (DVM
์ฌ์ฉ
KitKat
) ์ดํ
Android 4.4 (DVM
์์ ART
๋ก ์ปดํ์ผ ๋ฐฉ์์ ๋ฐ๊พธ๊ธฐ ์์ํจ
Dalvik
์์ ๋์๊ฐ๋ ์ฑ๋ค์ดART
์์ ์ฃฝ๋ ํ์์ด ๋ฐ์ํจ
Lolipop
) ์ดํ
Android 5.0 (ART
๊ฐ ๊ธฐ๋ณธ runtime
์ด ๋จ
Nougat
) ์ดํ
Android 7.0 (AOT-compile
๋ฐฉ์๊ณผ JIT-compile
๋ฐฉ์์ ์กฐํฉํด์ ์ฌ์ฉํ๊ธฐ ์์ํจ
Oreo
) ์ดํ
Android 8.0 (ART-compile
๋ฐฉ์์ ๋ง์ ๊ฐ์ ์ด ์ด๋ค์ ธ ๋ง์ ๋ฌธ์ ๋ค ํด๊ฒฐ
ListView
vs RecyclerView
๋ถ๋ฅ | ListView |
RecyclerView |
---|---|---|
ViewHolder |
์ ํ | ํ์ |
Item Layout |
์ธ๋ก ๋ฐฉํฅ๋ง ์ง์ | LayoutManager ์ ํตํด ๋ค์ํ๊ฒ ์ค์ ๊ฐ๋ฅ |
Item Animation |
๋ณ๋์ animation ์ด ์๋ค |
RecyclerView.ItemAnimator ํด๋์ค๋ฅผ ํตํด ์ ์ดํ ์ ์๋ค. |
Adapter |
๋ค์ํ ๋ถ๋ฅ์ ์ด๋ํฐ๊ฐ ์กด์ฌํ๋ค. EX) ArrayAdapter , CursorAdapter , etc... |
Item ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ Adapter ๋ฅผ ์ง์ ์ ์ํด์ ์ฌ์ฉํด์ผ ํ๋ค. |
Decoration |
android:divider ์์ฑ์ ์ด์ฉํ์ฌ item ๋ค์ ๊ด๋ฆฌํ ์ ์๋ค. |
RecycerView.ItemDecoration ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ๋ถ์ ์ ์ค์ ํด์ผ ํ๋ค. |
Click Event |
AdapterView.OnItemClickListener interface ๋ฅผ ํตํด ์ค์ ํ ์ ์๋ค. |
RecyclerVier.OnItemClickListener ์ด๋ผ๋ ๊ฐ๋ณ ํฐ์น๋ฅผ ๊ด๋ฆฌํ๋ interface ๋ ์์ง๋ง, OnClickListener ๋ ๋ฐ๋ก ์กด์ฌํ์ง ์์ ์ง์ ์ ์ํด์ ์ฌ์ฉํด์ผ ํ๋ค. |
Flowable
๊ณผ Observable
์ ์ฐจ์ด์ ์ ์ค๋ช
ํ์์ค
Flowable
์ Backpressure Buffer
๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋์ด ์์ง๋ง, Observable
์ Backpressure Buffer
๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋์ด์์ง ์๋ค. (๋ฐ๋ผ์ ์ง์ ์ถ๊ฐํด์ ๋ฑ๋กํด์ค์ผ ํ๋ค)
Backpressure Buffer
๋?
์๋น
๋๋ ๋ฐ์ดํฐ์ ๋นํด ์์ฐ
๋๋ ๋ฐ์ดํฐ์ ์์ด ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ OutOfMemory
๊ฐ์ exception
์ด ๋ฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์, ์์ฐ
๋๋ ๋ฐ์ดํฐ์ ์์ ์๋น
๋๋ ๋ฐ์ดํฐ์ ์์ ๋น๋กํด์ ์กฐ์ ํด์ฃผ๋ ์ญํ ์ ํด ์ค๋ค.
REST
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
Representational State Transfer
์์์ ์ด๋ฆ
์ผ๋ก ๊ตฌ๋ถํ์ฌ ํด๋น ์ ๋ณด
๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ชจ๋ ๊ฒ
์น์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ ์ํคํ
์ฒ ์คํ์ผ
CRUD
Operation
Create
: ์์ฑ (POST
)
Read
: ์กฐํ (GET
)
Update
: ์์ (PUT
)
Delete
: ์ญ์ (DELETE
)
์ฅ์ : Server
์ Client
์ ์ญํ ์ ๋ช
ํํ๊ฒ ๊ตฌ๋ถํ๋ค.
๋จ์ : REST
๋ ์ค๊ณ ๊ฐ์ด๋์ผ ๋ฟ์ด๋ผ, ํ์ค์ด ์กด์ฌํ์ง ์๋๋ค.
REST API๋?
REST
๊ธฐ๋ฐ์ผ๋ก ์๋น์ค API
๋ฅผ ๊ตฌํํ ๊ฒ
API
๋?
Application Programming Interface
๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ ์งํฉ์ ์ ๊ณตํ์ฌ ์ปดํจํฐ ํ๋ก๊ทธ๋จ๊ฐ ์ํธ์์ฉ์ ์ด์งํ๋ฉฐ, ์๋ก ์ ๋ณด๋ฅผ ๊ตํ ๊ฐ๋ฅ ํ๋๋ก ํด์ฃผ๋ ๊ฒ
REST API
์ค๊ณ ๊ธฐ๋ณธ ๊ท์น
๋ํ๋จผํธ
: ๊ฐ์ฒด ์ธ์คํด์ค์ ๋น์ทํ ๊ฐ๋ ์ปฌ๋ ์
:์๋ฒ
์์ ๊ด๋ฆฌํ๋๋ํ ํฐ๋ฆฌ
์ ์ฅ์์คํ ์ด
:ํด๋ผ์ด์ธํธ
์์ ๊ด๋ฆฌํ๋๋ฆฌ์์ค
์ ์ฅ์
URI
์ ์ ๋ณด๋ ์์์ ํํํด์ผ ํ๋ค.- ์์์ ๋ํ ํ์๋
CRUD Operation
์ผ๋ก ํํํ๋ค. /
๋ ๊ณ์ธต ๊ด๊ณ๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉํ๋ค.URI
๋ง์ง๋ง ๋ฌธ์๋ก/
๋ฅผ ํฌํจํ์ง ์๋๋ค.ํ์ผ ํ์ฅ์
๋URI
์ ํฌํจ์ํค์ง ์๋๋ค._
๋URI
์ ์ฌ์ฉํ์ง ์๋๋ค.
RESTful์ด๋?
REST
์๋ฆฌ๋ฅผ ๋ฐ๋ฅด๋ ์์คํ
URI
์ URL
์ ์ฐจ์ด์ ์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
Uniform Resource Indetifier
)
URI (์ ์ฒด ์ฃผ์
EX)
https://test.com/test.pdf?index=5
Uniform Resource Locator
)
URL (ํ์ผ์ ์์น(๊ตฌ๋ถ์)๋ฅผ ํ์ํ๋ ์ฃผ์
EX)
https://test.com/test.pdf
?index=5
https://test.com/test.pdf?index=5
https://test.com/test.pdf?index=15
์์ ๊ฐ์ ์ฃผ์๋ ๊ฐ์ URL
์ ๊ฐ์ง์ง๋ง URI
๋ ์๋ก ๋ค๋ฆ
URL
์URI
์์ ์์
Process
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
์คํ์ค์ ์๋ ํ๋ก๊ทธ๋จ
ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด, ์คํํ๊ธฐ ์ํด์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
์ด ์ด๋ฃจ์ด์ง๊ณ , ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ธด์ผ๋ก ๋ฐ์ด๋๋ฆฌ ์ฝ๋๊ฐ ์ฌ๋ผ๊ฐ๋ค. ์ด ์๊ฐ๋ถํฐ process
๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
Process
์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
Code ์์ญ
: ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ ์์ค์ฝ๋๋ค์ด ์ฌ๋ผ๊ฐ๋ค.Data ์์ญ
:์ ์ญ๋ณ์
,static
๋ณ์๋ค์ด ํ ๋น๋๋ค.Heap ์์ญ
:๋์ ํ ๋น
์ ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.Stack ์์ญ
:์ง์ญ๋ณ์
์์ธ์
๋ค์ ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.
Process Scheduling
Process
์ CPU
ํ ๋น ์์ ๋ฐ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ๋ ์ผ
Thread
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
Process
๋ด๋ถ์ ์์
๋จ์
ํน์ง
Thread
๋ ํprocess
์์ ์ต์ ํ๋ ์ด์ ์กด์ฌํ๋ค.Multi-Thread
์์ ๊ฐthread
๋ผ๋ฆฌ๋ ์๋กprocess
์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํ๋ค.
Thread
๊ฐ ํ๋์process
์์์ ์ฌ๋ฌ๊ฐ๊ฐ ์กด์ฌํ๋๊ฑธMulti-Thread
๋ผ๊ณ ํ๋ค.
Thread Pool
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
Thread
๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๋๊ฒ
Handler
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
์๋ก ๋ค๋ฅธ thread
๊ฐ์ ํต์ ์ ์ํ ์ฅ์น
Looper
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
MessageQueue
๋ก๋ถํฐ message
๋ฅผ ๊บผ๋ด์์ ํด๋น message
์ ์ฐ๊ฒฐ๋ handler
๋ฅผ ํธ์ถํ๋ ์ญํ ์ ํจ
MessageQueue
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
Message
๋ฅผ Queue
ํํ๋ก ์ ์ฅํ์ฌ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด์ด๋ค.
FIFO
(First In First Out
) ๋ฐฉ์์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์,message
๋queue
์ ๋ค์ด์จ ์์์ ๋ฐ๋ผ ์ฐจ๋ก๋๋ก ์ ์ฅ๋จ
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จmessage
๊ฐ์ฒด๋ถํฐ ์ฐจ๋ก๋๋ก ์ฒ๋ฆฌ๋จ
Message
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
Thread
๋ก ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ํ ๊ณณ์ ์ ์ฅํ ๊ฐ์ฒด์ด๋ค.
Wrapper
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ฑฐ๋ ์ฐ๊ธฐ ์ํด ๋ฐ์ดํฐ ํํ๋ฅผ ์ค์ ํด ์ฃผ๋ ์ญํ ์ ํจ
Primitive Type
์ ๋ํ ํด๋์ค ํํ์ด๋ผ๊ณ ํ ์ ์๋ค.
View.post()
์ Handler
์์ ์ฐจ์ด์ ์ ์ค๋ช
ํ์์ค
View.post()
๋ handler
์๋ ๋ฌ๋ฆฌ View
๊ฐ attach
๋์ง ์์ผ๋ฉด post
๋ ๋ชจ๋ runnable
๋ค์ View
๊ฐ attach
๋ ๋ ๊น์ง ์ฐ๊ธฐํ๋ค.
Thread
๊ฐ ํต์ ๋ฐฉ๋ฒ์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
// TODO
Activity
๊ฐ ํต์ ์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
Singleton
์ ์ด์ฉํ๊ฑฐ๋ intent
๋ฅผ ์ฌ์ฉํ๋ค.
FCM
์ ์๋ฆฌ์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
key
๋ฅผ FCM ์๋ฒ
์์ ์ป์
1. ์ดํ๋ฆฌ์ผ์ด์
์ ์ํ - ์ดํ๋ฆฌ์ผ์ด์
์ด ์ค์น๋๋ ์๊ฐ
firebase ์๋ฒ
์key
ํ๋์ ์ํ ์์ฒญ์ ๋ณด๋ Firebase ์๋ฒ
์์key
๋ฅผ ๋ง๋ค์ด์ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ ๋ฌํจ- ์ดํ๋ฆฌ์ผ์ด์
์ผ๋ก ์ ๋ฌ๋
key
๋ฅผgoogle server
์ ์ ์กํจ Google server
์์ ์ดkey
๋ฅผdatabase
์ ์ ์ฅํจ
Google ์๋ฒ
์์ ์ดํ๋ฆฌ์ผ์ด์
์ผ๋ก notification
์ ๋ฐ์์ํด
2. Google server
์์ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํดkey
๋ฅผ ์ป์Key
์ ๋ฐ์ดํฐ๋ฅผfirebase server
๋ก ๋ณด๋ (http ํต์
์ด ์ด์ฉ๋จ)Firebase server
์์ ๋ฐ์key
๋ก ์ด๋ค ์ดํ๋ฆฌ์ผ์ด์ ์ธ์ง ๊ตฌ๋ถ ํ, ๋ฐ์ดํฐ๋ฅผnotification
์ผ๋ก ํธ์ถํจ
ABI
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
Application Binary Interface
Runtime
์ ์์คํ
๊ณผ ์ฑ์ ๋จธ์ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ์ํธ์์ฉํ ์ง๋ฅผ ๊ธฐ์ ํ ์ธํฐํ์ด์ค.
HTTP
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ญ์ฌ์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
2009๋
: Android
๋ฐํ, HttpClient
, ์ํ์น์ DefaultHttpClient
์ฌ์ฉ
2011๋
: Google Developer
๋ธ๋ก๊ทธ์์ HttpUrlConnection
์ฌ์ฉ ๊ถ์ฅ
์ดํ : Volley
๋ OkHttp
์ ๋ฑ์ฅ์ผ๋ก HTTP
ํต์ ์ด ์ฌ์์ง
2014๋
: HttpClient
๊ฐ Deprecated
๋๋ฉด์ ์ด๋ฅผ ๋ฒ ์ด์ค๋ก ํ๋ Volley
๋ ๊ฐ์ด Deprecated
๋จ
์ดํ : OkHttp
์ ๊ทธ wrapper
์ธ Retrofit
์ด ๋ฑ์ฅํ์ฌ ์ธ๊ธฐ๋ฅผ ๊ฐ์ง
Retrofit
์ด ์ธ๊ธฐ๋ฅผ ๋ฐ๊ฒ๋ ์ด์ ?
Client
๋ถ๋ถ๊ณผ Callback
ํ์๋ค์ ํ๋ฌ๊ทธ๋ก ์ค์ ํ ์ ์๊ธฐ ๋๋ฌธ
Context
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
์๋ก ์์ฑ๋ ๊ฐ์ฒด
์์ ์ง๊ธ ์ด๋ค ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ ์ ์๊ฒ ํด์ค
๋ํ resource
, database
, preferences
๋ฑ์ ์ ๊ทผ์ ์ ๊ณตํด์ค
Context
๋ ๊ธฐ๋ณธ์ ์ผ๋ก gc
์ ์ํด ์์ง๋์ง ์์
Application Context
Singleton-instance
์ด๋ฉฐ, application life-cycle
๊ณผ ์ฐ๊ฒฐ๋์ด ์์
ํ์ฌ์ context
์ ๋ถ๋ฆฌ๋ life-cycle
์ ๊ฐ์ง context
๋, activity
์ ๋ฒ์๋ฅผ ๋์ด์ context
๋ฅผ ์ ๋ฌํ ๋ ์ฌ์ฉํจ
Activity Context
Activity
์์ ์ฌ์ฉ๊ฐ๋ฅํ๋ฉฐ, activity life-cycle
๊ณผ ์ฐ๊ฒฐ๋์ด ์์
Activity
๋ฒ์ ๋ด์์ context
๋ฅผ ์ ๋ฌํ๊ฑฐ๋ lifecycle
์ด ํ์ฌ์ context
์ ๋ถ์ context
๊ฐ ํ์ํ ๋ ์ฌ์ฉํจ
Context
์ป๋ ๋ฐฉ๋ฒ๋ค
View.getContext()
activity context
๋ฅผ ๋ฐํํ๋ค.
this
View.getContext()
์ ๊ฐ์ ์ญํ ์ ํ๋ค.
Activity.getApplicationContext()
application context
๋ฅผ ๋ฐํํ๋ค.
ContextWrapper.getBaseContext()
์์ ์ context
๊ฐ ์๋ ๋ค๋ฅธ context
์ ์ ๊ทผํ ๋ ์ฌ์ฉ๋๋ค.
Context
๋ฅผ ์์ฑํ ๋ ๋ง๋ค์ด์ง๋ context
๋ค์ ๊ธฐ๋ณธ context
๋ฅผ ๋ฐํํ๋ค.
LMK
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
๋ชฉ์
Priority
OOM KILLER
์์ ์ฐจ์ด์ ์ ์ค๋ช
ํ์์ค
**Big** Size Image
์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ์์ค
Callable
๊ณผ Runnable
์ ์ฐจ์ด์ ์ ์ค๋ช
ํ์์ค
Interceptor
์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
GC
(Garbage Collection
)์ ๋ํด ์ค๋ช
ํ์์ค
GC
์ ์ข
๋ฅ์ ๋ํด์ ์ค๋ช
ํ์์ค
drawable
๊ณผ mipmap
์ ์ฐจ์ด์ ์ ์ค๋ช
ํ์์ค
๊ตฌ๋ถ | drawable |
mipmap |
---|---|---|
๋ชฉ์ | ๋ชจ๋ ์ด๋ฏธ์ง ์ ์ฅ | ์์ด์ฝ ์ด๋ฏธ์ง ์ ์ฅ |
์ง์ ๋ฒ์ | ๋ชจ๋ ๋ฒ์ | API 2.3 ์ด์ |
์ด๋ฏธ์ง ํฌ๊ธฐ | ๋๋ฐ์ด์ค ํฝ์ ๋ฐ๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง | ์ด๋ฏธ์ง ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง |
์ด๋ฏธ์ง๋ฅผ ํ๋ํ์ฌ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ์ด๋ฏธ์ง ํ์ผ์ drawable
์ ๋ฃ์ผ๋ฉด ์ด๋ฏธ์ง ์์ฒด๊ฐ ํ๋๋์ ์ด๋ฏธ์ง๊ฐ ์์๋์ง๋ง, ์ด๋ฏธ์ง ํ์ผ์ mipmap
์ ๋ฃ์ด์ฃผ๊ฒ ๋๋ฉด ํ๋๋์๋ ์ ๋นํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ ์ด๋ฏธ์ง ํ์ผ์ ๋ณด์ฌ์ค๋ค.
ReactiveX
๊ด๋ จ
Cold
์ ๋ํด์ ์ค๋ช
ํ์์ค
๋๋ถ๋ถ์
operator
์ ๊ธฐ๋ณธ๊ฐ
Stream
์ ์ ๊ณผ ํ๋ฅผ ์ฐ๊ฒฐ๋ง ์์ผ์ค๋ค.
Observer
๊ฐ ๋ฑ๋ก๋์ผ ์๋์ ์์ํ๋ค.
Hot
์ ๋ํด์ ์ค๋ช
ํ์์ค
Stream
์์ ๊ฐ์ ๊ณ์ ๋ฐ์์ํจ๋ค.
Observer
๊ฐ ๋ฑ๋ก๋์์ง ์์๋ ์๋๋๋ค.
Coroutines
๊ด๋ จ
Flow
์ ๊ดํ์ฌ ์ค๋ช
ํ์์ค
๋น๋๊ธฐ
๋ก ๋์ํ๋ฉด์ ์ฌ๋ฌ๊ฐ์ง์ ๊ฐ์ ๋ฐํํ๋ Coroutines Builder
์ด๋ค.
suspend
๋?
[stackoverflow]
์ถํ ์ ๋ฆฌ ์์
AndroidX
๊ฐ ๋ฌด์์ธ์ง ์ค๋ช
ํ์์ค
๊ธฐ์กด Android
์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฑ๋ฅ์ ํฌ๊ฒ ๊ฐ์ ์ํจ ๊ฒ
support
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ AppCompoat
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด androidx
๋ก ํ๋๋ก ํฉ์ณ์ก๋ค.
AndroidX
ํจํค์ง๋ ๊ธฐ์กด Android
์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ผํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ ํ ๋์ฒดํ๋ค.