Android-Interview-Study-2022
Android-Interview-Study-2022 copied to clipboard
๐ค 2021~ ์๋๋ก์ด๋ ์ทจ์ง ๋๋น ๋ฉด์ ๊ณต๋ถ ๊ธฐ๋กํฐ ๐
Android-Interview-Study-2022 
๐ค 2021~ ์๋๋ก์ด๋ ์ทจ์ง ๋๋น ๊ณต๋ถ ๊ธฐ๋กํฐ ๐
์กฐ๋ง๊ฐ ๋ค์ ์์ ์์ ,,,ใ ใ
์๋๋ก์ด๋ 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์ค์ ๊ฐ๋ฅ
measureonMeasure:View์Size๋ฅผ ํ์ธํ๊ธฐ ์ํด ํธ์ถ๋จ
ViewGroup์ผ ๊ฒฝ์ฐ ๊ณ์ํด์Child View์ ๋ํSize์ธก์ ์ ํ๊ณ , ๊ทธ์ ๋ํ ๊ฒฐ๊ณผ๋ก ์์ ์Size๋ฅผ ๊ฒฐ์
layoutonLayout:View์Size๋ฅผ ์ธก์ ํ์ฌposition์ค์ ํ ํธ์ถ๋จdispatchToDrawdrawonDraw: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๋ค์ ์งํฉ
Root Activity : task์ ์์ด๊ธฐ ์์ํ ์ตํ์ activity
Top Activity : task์ ๊ฐ์ฅ ์ต๊ทผ์ ์์ธ ์ต์์ 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์ nameExplicit Intent์ Implicit Intent์ ๊ตฌ๋ถ ์๋จ |
Action |
์ํํ ์์
์ ์ค๋ช
ํ๋ ๋ฌธ์์ด ์ผ๋ฐ์ ์ธ Action์ Intent์์ ์์๋ก ์ ์๋์ด ์์ |
Data |
์์
์ ์ํํ data ๋ฐ ํด๋น ๋ฐ์ดํฐ์ MIME ์ ํ์ ์ฐธ์กฐํ๋ Uri ๊ฐ์ฒด |
Category |
Intent๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ component์ ์ข
๋ฅ์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์ ๋ฌธ์์ด |
Extras |
์์ฒญํ ์์
์ ์ํํ๊ธฐ ์ํด ํ์ํ ์ถ๊ฐ ์ ๋ณด๋ค์ ๋ด๊ณ ์๋ Key:Value ๊ฐ์ฒด |
Flags |
Intent์ ๋ํ Meta-Data๊ฐ์ ์ญํ |
MIME๋?
์ด ๋ฐ์ดํฐ๊ฐ ์ด๋ค ํ์์ ๋ฐ์ดํฐ์ธ์ง ์ค๋ช ํ๋ ๋ช ์นญ
| ํ์ | ์ค๋ช | ์์ |
|---|---|---|
text |
๋ชจ๋ ์ข ๋ฅ์ ํ ์คํธ | text/planetext/html |
image |
๋ชจ๋ ์ข ๋ฅ์ ์ด๋ฏธ์ง | image/gifimage/png |
audio |
๋ชจ๋ ์ข ๋ฅ์ ์ค๋์ค | audio/midiaudio/wav |
video |
๋ชจ๋ ์ข ๋ฅ์ ๋น๋์ค | video/webmvideo/ogg |
application |
๋ชจ๋ ์ข ๋ฅ์ ๋ฐ์ดํฐ | application/xmlapplication/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๋VoidInterface TypeArray TypeEnum Typeetc...
๊ธฐ๋ณธ์ ์ผ๋ก
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 ์ค ์ด๋๊ฒ์ธ์ง ์ค๋ช
ํ์์ค
Android 4.4 (KitKat) ์ด์
DVM ์ฌ์ฉ
Android 4.4 (KitKat) ์ดํ
DVM์์ ART๋ก ์ปดํ์ผ ๋ฐฉ์์ ๋ฐ๊พธ๊ธฐ ์์ํจ
Dalvik์์ ๋์๊ฐ๋ ์ฑ๋ค์ดART์์ ์ฃฝ๋ ํ์์ด ๋ฐ์ํจ
Android 5.0 (Lolipop) ์ดํ
ART๊ฐ ๊ธฐ๋ณธ runtime์ด ๋จ
Android 7.0 (Nougat) ์ดํ
AOT-compile ๋ฐฉ์๊ณผ JIT-compile ๋ฐฉ์์ ์กฐํฉํด์ ์ฌ์ฉํ๊ธฐ ์์ํจ
Android 8.0 (Oreo) ์ดํ
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์ ์ฐจ์ด์ ์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
URI (Uniform Resource Indetifier)
์ ์ฒด ์ฃผ์
EX)
https://test.com/test.pdf?index=5
URL (Uniform Resource Locator)
ํ์ผ์ ์์น(๊ตฌ๋ถ์)๋ฅผ ํ์ํ๋ ์ฃผ์
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์ ์๋ฆฌ์ ๋ํ์ฌ ์ค๋ช
ํ์์ค
1. ์ดํ๋ฆฌ์ผ์ด์
์ ์ํ key๋ฅผ FCM ์๋ฒ์์ ์ป์
- ์ดํ๋ฆฌ์ผ์ด์
์ด ์ค์น๋๋ ์๊ฐ
firebase ์๋ฒ์keyํ๋์ ์ํ ์์ฒญ์ ๋ณด๋ Firebase ์๋ฒ์์key๋ฅผ ๋ง๋ค์ด์ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ ๋ฌํจ- ์ดํ๋ฆฌ์ผ์ด์
์ผ๋ก ์ ๋ฌ๋
key๋ฅผgoogle server์ ์ ์กํจ Google server์์ ์ดkey๋ฅผdatabase์ ์ ์ฅํจ
2. Google ์๋ฒ์์ ์ดํ๋ฆฌ์ผ์ด์
์ผ๋ก notification์ ๋ฐ์์ํด
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 ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ผํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ ํ ๋์ฒดํ๋ค.