ð 컎íší°ê° íìµí ì ìëë¡ íë êž°ì ì ê°ë°íë AIì í ë¶ìŒ
ð Linear Regression, Decision Tree, Random Forest, etc
ð ì¬ë¬ ìžµì ê°ì§ ìžê³µì 겜ë§ì ìŽì©í ëšžì ë¬ë
ð DNN, CNN, RNN, LSTM, etc
ð cost륌 ìµìííë ìê³ ëŠ¬ìŠ
ð ê·žë¬í W, b륌 ì°Ÿê³ ê°±ì íë 맀컀ëìŠ
ð ììž¡ ê°ê³Œ 결곌 ê°ì ì°šìŽ ì ë륌 ìë €ì£Œë íšì
ð cost(loss) : ììž¡ ê°ê³Œ 결곌 ê°ì ì°šìŽ ì ë륌 ìë €ì£Œë ê°
ð Hypothesis : íë šì íµíŽ ììž¡í ë°©ì ì, ê°ë
ããð H(x) = Wx + b â H(X) = WX
ð ìŽë€ í ë³ìì ì¬ë¬ ë€ë¥ž ë³ìë€ìŽ 죌ë ìí¥ë ¥ì ì íì ìŒë¡ ë¶ìíë íìµ êž°ë²
ð ê°ê°ì ë³ìì ì¬ë¬ ë€ë¥ž ë³ìë€ìŽ 죌ë ìí¥ë ¥ì ì íì ìŒë¡ ë¶ìíë íìµ êž°ë²
ð ìŒë šì ë¶ë¥ ê·ì¹ì íµíŽ ë°ìŽí°ë¥Œ ë¶ë¥íë íìµ êž°ë²
ð overfitting 묞ì ê° ì ë°ìíš
ð overfitting : íìµ ê²°ê³Œê° ì€ë¹í íë š ë°ìŽí°ììë ì ííì§ë§ ìŒë°ì ìž ìí©ììë ì íëê° íì í ëšìŽì§ë íì
ð íìµ ê³Œì ìì 구ì±í ë€ìì Decision Tree륌 ìŽì©íë íìµ êž°ë²
ð overfitting 묞ì 륌 íŽê²°í ì ìì
ð 죌ìŽì§ ê°ì²Žë€ì ì¬ë¬ í¹ì±ì ê³ ë €íŽ ì ì¬í ê°ì²ŽëŒëŠ¬ 귞룹ííë ê²
ð Regression
ããð ì°ìì ìž ê°ì ììž¡ (ë²ì êž°ì€ æ)
ð Classfication
ããð ìŽì°ì ìž ê°ì ììž¡
ð ë€ì€ íŽëì€ ë¶ë¥ 묞ì 륌 íŽê²°íë íìµ êž°ë²
ð ë€ì€ íŽëì€ ë¶ë¥ 묞ì : 3ê° ìŽì ì íì§ ì€ íë륌 ííë 묞ì
ð ì 겜ë§ìì Input Layerë¶í° Hidden, Output layer륌 ê±°ì³ ì¶ë ¥ëë 곌ì
ð Output layerììë¶í° ìë°©í¥ìŒë¡ ížë¯žë¶ì ìííŽê°ë©° weight, bias륌 ê°±ì íë ê²
ð overfittingì ë°©ì§íêž° ìíì¬ ìŒë¶ ë°ìŽí°ë¥Œ íìµ ë°ìŽí°ì í¬íšíì§ ìë ê²
ð overfittingì ë°©ì§íêž° ìíì¬ weight륌 handling íë ê²
ð íìµë°ìŽí°ë¥Œ 곌íê² íìµíì¬, íìµë°ìŽí°ììë ì íì±ìŽ ë§€ì° ëìŒë ìŽìž ë°ìŽí°ì ëíŽìë ì íì±ìŽ ë®ê² ëì€ë íì
ð ìžê³µì ê²œë§ êµ¬ì¡°ìì Hidden layer륌 2ê° ìŽììŒë¡ ë§ìŽ 구ì±íì¬ íìµ ê²°ê³Œë¥Œ í¥ììíš ë¥ë¬ë ìê³ ëŠ¬ìŠ
ð ë€ë¥ž ëšžì ë¬ë êž°ë²ì ë¹íŽ ìì¹ììž¡ì ê°ì ìŽ ììŒë©°, Dataê° ë§ììë¡ ì±ë¥ìŽ í¥ì
ð Hidden Layer ë³µì¡í ìë¡ ê³ì° ìê° å€, weight ì믞륌 ìêž° ìŽë €ì 결곌 íŽììŽ ìŽë €ì
ð ë°ìŽí°ì í¹ì§ì ì¶ì¶íê³ ê·ž í¹ì§ë€ì íšíŽì íì
íë ë¥ë¬ë ìê³ ëŠ¬ìŠ
ð ìŽë¯žì§ ì²ëŠ¬ ìì
ì ê°ì ìŽ ìì
ð Convolution : ë°ìŽí° ê° ì±ë¶ì ìžì í¹ì±ì ê³ ë €íì¬ íëì í¹ì§ìŒë¡ ëì¶íë 곌ì
ð Pooling : Convolution 곌ì ì ê±°ì¹ layerì ì¬ìŽìŠë¥Œ ì€ìŽë 곌ì
ð ë°ë³µì ìŽê³ ìì°šì ìž ë°ìŽí° íìµì í¹íë ë¥ë¬ë ìê³ ëŠ¬ìŠ
ð ìŽì ì 볎륌 íì¬ ë¬žì íŽê²°ì ììŽ íì©í ì ìëë° ìŽë ëŽë¶ì ìí êµ¬ì¡°ê° í¬íšëìŽ ìêž° ë묞
ð ìì°ìŽ ì²ëŠ¬ ë¶ìŒì ê°ì ìŽ ìì
ð LSTM
ð RNNì Gradient Vanishing Problemì 극복íêž° ìíŽ Hidden layerì ì¶ê°ì ìŒë¡ logicì 구íí ë¥ë¬ë ìê³ ëŠ¬ìŠ
ð GVP : backpropagation 곌ì ìì gradient ê°ìŽ ìì€ëìŽ ì ëë¡ íìµìŽ ëì§ ìë 묞ì
â tanh륌 믞ë¶í ê°ìŽ 1ë³Žë€ ìêž° ë묞ì ê³±íë€ ë³Žë©Ž ê°ìŽ ìì€ëš
â ì relu ì ì? ìŽì ê°ìŽ 컀ì§ì ë°ëŒ ê²°ê³Œê° ë°ì°í ì ìì
â ì sigmoid ì ì? tanhê° backpropagation ì¢ ë íšê³Œì
ð 몚ëžììŽ íìµíë ê°í íìµ êž°ë²
ð ê°í íìµ : ìíì°©ì€ë¥Œ íµíŽ íìµíë ë°©ë²
ð ìŽë€ stateì ëíì¬ ìŽë€ actionì ì ì©íë ì§ì ë°ëŒ rewardê° ì£ŒìŽì§ëë°, ìŽ reward륌 ìµëííêž° ìí ë°©í¥ìŒë¡ íìµìŽ ì§íëš
ð ì¬ìžµì 겜ë§ì ìŽì©íë Q-Learning
ð íšì ì ìž
â fun main(){..}
ð void ê°ë
곌 ëì
ð í¹ìí ê°ì²Žë¥Œ ë°í
ð voidë ì묎 ê²ë ë°ííì§ X
ð val
ããð ë¶ë³í
ð var
ããð ê°ë³í
ð ìë£íì ìëìŒë¡ ì¶ë¡
ð but, ë°ëì ê°ìŽ í ë¹ëìŽìŒ íš
â val c = 100 (O)
â val num (X)
â val vs const?
ããð val: ë°íìì ìì ê²°ì
ããð const: 컎íìŒíìì ìì ê²°ì
ð ìë°ìì 컎íìŒ íìì nullì ì¡ì ì ìê³ , ë°íììì nullì ì¡ì NPE ë°ì
ð ìœí늰ìì 컎íìŒ íìì ì¡êž° ìíŽ ë€ì곌 ê°ì ë°©ë²ì ê³ ìíš
ð Kotlin ë³ì Ʞ볞ì ìŒë¡ non-null
ð NPE륌 믞늬 ë°©ì§í ì ìì
ð ? êž°ížë¥Œ ëª
ìíì¬ nullable
ð ìžìŽí ìœ (?.) : str?.length
ããð null or str.length ì¶ë ¥
ð non-null ëšì (!!.) : str!!.length
ããð NPE or str.length ì¶ë ¥
ð ìë¹ì€ ì°ì°ì (?:) : str?.length ?: -1
ããð -1 or str.length ì¶ë ¥
ð Array
ããð ì¬ìŽìŠ ë³ê²œ ë¶ê°ë¥
ããð ìì ì§ì ë³ê²œ ê°ë¥
ããð arr[0] = 5 (O)
ð List
ããð ìœêž° ì ì©, ì¬ìŽìŠ ë³ê²œ ê°ë¥
ããð ìì ì§ì ë³ê²œ ë¶ê°ë¥
ããð arr[0] = 3 (X)
ããð MutableList
ããããð ì¬ìŽìŠ ë³ê²œ ê°ë¥
ããããð ìì ì§ì ë³ê²œ ê°ë¥
ããããð arr[0] = 1 (O)
ããããð ArrayList : MutableList
ð í¹ì ê°ì²Žì 컚í
ì€íž ëŽìì í¹ì ëì(íë¡íŒí° ìŽêž°í/íì©)ì ì€ííêž° ìí 목ì ë§ì ê°ì§ íšì
ð 5ê°ì§ì ì¢
ë¥
ããð apply
ããããð apply íšì ëŽì 몚ë ëª
ë ¹ë€ìŽ ìíëê³ ëë©Ž ê·ž ëª
ë ¹ë€ìŽ ì ì©ëìŽ ìë¡ ìì±ë ìžì€íŽì€ë¥Œ ë°í
ããããð ì€ìœí ëŽìì this ì°žì¡° ì°ì°ì륌 ì¬ì© (ìëµ ê°ë¥)
ããð run
ããããð run íšì ëŽì 몚ë ëª
ë ¹ë€ìŽ ìíëê³ ëë©Ž ì€ìœí ëŽ ë§ì§ë§ ëŒìžì ì€í 결곌 ê°ì ë°í
ããããð ì€ìœí ëŽìì this ì°žì¡° ì°ì°ì륌 ì¬ì© (ìëµ ê°ë¥)
ããããð íì¥ íšì ííë¡ ì¬ì©
ããð with
ããããð with íšì ëŽì 몚ë ëª
ë ¹ë€ìŽ ìíëê³ ëë©Ž ì€ìœí ëŽ ë§ì§ë§ ëŒìžì ì€í 결곌 ê°ì ë°í
ããããð ì€ìœí ëŽìì this ì°žì¡° ì°ì°ì륌 ì¬ì© (ìëµ ê°ë¥)
ããããð ìì ê°ì²Žë¥Œ íëŒë¯ží°ë¡ ë°ì ì¬ì©
ããð also
ããããð also íšì ëŽì 몚ë ëª
ë ¹ë€ìŽ ìíëê³ ëë©Ž ê·ž ëª
ë ¹ë€ìŽ ì ì©ëìŽ ìë¡ ìì±ë ìžì€íŽì€ë¥Œ ë°í
ããããð ì€ìœí ëŽìì it ì°žì¡° ì°ì°ì륌 ì¬ì© (ìëµ ë¶ê°ë¥)
ããð let
ããããð let íšì ëŽì 몚ë ëª
ë ¹ë€ìŽ ìíëê³ ëë©Ž ì€ìœí ëŽ ë§ì§ë§ ëŒìžì ì€í 결곌 ê°ì ë°í
ããããð ì€ìœí ëŽìì it ì°žì¡° ì°ì°ì륌 ì¬ì© (ìëµ ë¶ê°ë¥)
ð ìŒêž ê°ì²Ž í¹ì§ì ê°ì§ ìŽëŠ ìë íšì
ð ìžìë¡ ì ë¬ ê°ë¥
ð ë°í ê°ì ì¬ì© ê°ë¥
ð ë³ìì ëŽì ì ìì
ð íšìí íë¡ê·žëë°ìì ì죌 ì°ì
ð val square : (Int) -> (Int) = {number -> number * number}
ð val square = {number: Int -> number * number}
ð ìœí늰 ë° ìëë¡ìŽëìì ì ì€ìí ê¹?
ããð ížëŠ¬íêž° ë묞
ããð methodê° ëš íë ë¿ìž ìë° ìží°íìŽì€ì ëíŽ ëë€ìì ì¬ì©íì¬ ìœë륌 ê°ê²°íê² ì ì©í ì ìì
ð ìŽêž°í ëžë¡
ð 죌 ìì±ì ìì±ì ê°ìŽ ìì±ëš
ð ìŠ, ìŽêž°ì ì€íëš
ð ë¶ëªš íŽëì€ ì open í€ìë륌 ë¶ì
ð ìì íŽëì€ë ëìŒ
ð finalì íŽì íë ê°ë
ð code
open class Human(val name: String = "Jordan") {
// 죌 ìì±ì ë° default
constructor(_name: String) {
name = _name
}
// ë¶ ìì±ì
init {
println("Hello")
}
// ìŽêž°í ëžë¡
open fun sing() {
println("lalala")
}
// overriding íì©
final fun dance() {
println("yeyeye")
}
// overriding ë¶ê°
}
class Korean : Human() {
override fun sing() {
super.sing()
// ë¶ëªš íŽëì€
println("ëŒëŒëŒ")
}
// overriding
override fun sing() {
println("ëŒëŒëŒ")
}
// Error
}
ð lateinit
ããð varë¡ ì ìžë íë¡íŒí°ë§ ê°ë¥
ããð íë¡íŒí° ê²í° ë° ìží° ì¬ì© ë¶ê°
ð lazy
ããð valë¡ ì ìžë íë¡íŒí°ë§ ê°ë¥
ããð ížì¶ ìì ì by lazy { } ì ìì ìíŽ ëžë¡ë¶ë¶ ìŽêž°í ì§í
ð ê°ì²Ž ìì±ê³Œ ëìì ìŽêž°ííêž° íë 겜ì°ì ì¬ì©
ð ì¶ìíŽëì€
ããð ì¶ì ë©ìë륌 í¬íší íŽëì€
ããããð ì¶ì ë©ìë?
ããããããð ì ìžë§ ìê³ ë³žì²Žë 구íëì§ ìì ë©ìë
ããããããð ìì íŽëì€ìì ë°ëì ì€ë²ëŒìŽë©ì íŽìŒë§ ì¬ì©í ì ìì
ããð íì íŽëì€ìì 구첎íí íìê° ìì
ããð extends í€ìë ì¬ì©, ë€ì€ ìì 구í ë¶ê°ë¥
ð ìží°íìŽì€
ããð 몚ë ë©ìëê° ì¶ì ë©ìëìž ê²œì°
ããð ëŒëë§ ììŒë©° 구ííë 몚ë íŽëì€ì ëíŽ ê°ì ì ìŒë¡ ë©ìë륌 구ííëë¡ ë§ë¬
ããð implements í€ìë ì¬ì©, ë€ì€ ìì 구í ê°ë¥
ð ë°ìŽí°íŽëì€
ããð ë°ìŽí° ì ì¥ì ìŽì ì ë§ì¶êž° ìíŽ ìœí늰ìì í¹ë³í ê³ ìë íŽëì€
ããð íŽëì€ ëŽì©ì ìœê² íìž ê°ë¥
ð ìœí늰ììë ì ì ë³ì륌 ì¬ì©í ë ìë°ìì ì¬ì©íë static í€ìëê° ìë ëì Companion Object륌 ì ê³µíš
ð C.O.ë íŽëì€ ìì± ì ìëìŒë¡ ëë°ëìŽ ìì±ëë ê°ì²Ž
ð ìë°í ë§íìë©Ž C.O.ë static곌ë ë€ë¥Žë©°, ì¬ì©íë ì
ì¥ìì static ì²ëŒ 볎ìŽë ê²ìŒ ë¿ì
ããð ë³ìë ë©ìë륌 ì ê·Œí ë ì¶ìœ íí êž°ë¥ìŒë¡ ìžíŽ ë§ì¹ static곌 ëìŒíŽ 볎ìŽì§ë§ ì¬ì€ì .CompanionìŽëŒë í€ìëê° ìëµë ê²
ð ìœëì ë¶ê°ì ìž ì 볎륌 ì¶ê°íë ìí
ð @JvmStatic
ããð companionì ë±ë¡ë íë¡íŒí°ë¥Œ ìë°ìì static곌 ê°ìŽ ì¬ì©í ì ìëë¡ íë ìŽë
ží
ìŽì
ããð ìëì ìŒë¡ getter/setter íšì륌 ìì±íëë¡ íš
ð @JvmField
ããð ìœí늰 컎íìŒë¬ê° íŽë¹ íë¡íŒí°ì ëíŽ ìëì ìŒë¡ getter/setter íšì륌 ìì±íì§ ìëë¡ íë ìŽë
ží
ìŽì
ð ìœí늰ìì Ʞ볞ìŒë¡ ì ê³µíë êž°ë¥
ð ëìì± íë¡ê·žëë°ì ê°ë¥ìŒ íëë¡ íë ê°ë
ð ë¹ëêž° 겜ë ì€ë ëëŒê³ ììœ ê°ë¥
ð ëŒìŽëžë¬ëŠ¬ì ì¶ê°íì¬ ì¬ì©
ð Context SwitchingìŽ ìê³ ìµì íë ë¹ëêž° íšì륌 íµíŽ ë¹ì ì íìŒë¡ ìë
ð Non-Blocking or ë¹ëêž° ìœë륌 ë§ì¹ ëêž° ìœëì²ëŒ ìœê² ìì±ìŽ ê°ë¥
ð ìœë£šíŽ ì€ìœí
ããð ìœë£šíŽìŽ ëìíë ë²ì륌 ê·ì
ããããð CoroutineScope
ããããããð ì§ì ë ìœë£šíŽ 컚í
ì€ížë¥Œ ê°ìžë ìœë£šíŽ ë²ì륌 ë§ëŠ
ããããð GlobalScope
ããããããð ë
늜í ìœë£šíŽì 구ì±, ìëª
죌Ʞë íë¡ê·žëš ì 첎ì íŽë¹íë ë²ì
ð ìœë£šíŽ 컚í
ì€íž
ããð ìœë£šíŽì íì í¹ì 컚í
ì€ížìì ì€íëë©°, ìŽë í 컚í
ì€ížìì ì€íë ì§ ëì€íšì²ê° ê²°ì
ããããð Dispatchers.Main
ããããããð ì£Œë¡ UI êŽë š ìì
ì ìíí ë ì¬ì©
ããããð Dispatchers.Default
ããããããð ì£Œë¡ CPU ììì ë§ìŽ íìë¡ íë ìì
ì ìíí ë ì¬ì©
ããããð Dispatchers.IO
ããããããð ì£Œë¡ íìŒ IOë ë€ížìí¬ ìœì ìíí ë ì¬ì©
ð ìœë£šíŽ ë¹ë
ããð ìœë£šíŽì ììíë ë°©ë²ì ë»íš
ããããð launch
ããããããð ìŒëš ì€ííê³ ììŽë²ëŠ¬ë ííì ìœë£šíŽìŒë¡ ë©ìž íë¡ê·žëšê³Œ ë
늜ëìŽ ì€íí ì ìì
ããããããð Ʞ볞ì ìŒë¡ ìŠì ì€ííë©° ëžë¡ ëŽì ì€í 결곌ë ë°ííì§ X
ããããð async
ããããããð ë¹ëêž° ížì¶ì ìíŽ ë§ë ìœë£šíŽìŒë¡ 결곌ë ììžë¥Œ ë°ííš
ð ë€ì€ ë°ìŽí°ë¥Œ ìì°šì ìŒë¡ ë°©ì¶íë ë°ìŽí° ì€ížëŠŒì ìíŽ ì ê³µ
ð ìœê² ë§íŽ, UI êµ¬ì± ìì
ð View륌 ì¬ë¬ê° í¬íšíê³ ìë ê², ë·° 귞룹 ëŽìì ë·°ì ìì¹ë¥Œ ì§ì
ð Constructor
ããð 몚ë ë·°ë ìì±ììì ì¶ë°íëë°, ìì±ì륌 ìŽêž°ííë ëšê³
ð onAttachedToWindow
ããð ë¶ëªš ë·°ê° ížì¶íì¬ ìì ë·°ê° ìëì°ì ë¶ê²ëš, ìŽì ë·°ì idë¡ ì ê·Œ ê°ë¥
ð onMeasure
ããð ë·°ì í¬êž°ë¥Œ íìžíêž° ìíŽ ížì¶ëš
ð onLayout
ããð ë·°ì í¬êž°ì ìì¹ë¥Œ í ë¹íš
ð onDraw
ããð 뷰륌 ì€ì ë¡ ê·žëŠ¬ë ëšê³
ããð Canvas(ë·°ì 몚ì)ì Paint(ë·°ì ìê¹) íŽëì€ë¥Œ ìŽì©
ããð ë¹ë²í ížì¶ëë¯ë¡ ë©ìë ëŽì ê°ì²Ž í ë¹ì íŒíê³ , í ë² í ë¹í ê°ì²Žë¥Œ ì¬ì¬ì©í ê²ì ê¶ì¥
ð invalidate
ããð ëšìí 뷰륌 ë€ì 귞늎 ë(textë color ë³ê²œ), onDraw ì¬ížì¶
ð requestLayout
ããð onMeasure ë¶í° ë€ì 뷰륌 귞늎 ë(size ë³ê²œ)
â View ë ëë§ ìë륌 ê°ì íë ë°©ë²ì?
ããð onDraw ë©ìëì ë¡ì§ì 첎í¬
ð View ë°°ì¹ ë°©ì
ããð LinearLayout
ããããð í ë°©í¥ìŒë¡ View륌 ìë layout
ããð ConstraintLayout
ããããð ì§ì Viewì ìì¹ë¥Œ ì€ì íë layout
ããð RelativeLayout
ããããð í¹ì Viewìì ìëì ìž ìì¹ë¥Œ ìŽì©íŽ ìì¹ë¥Œ ê²°ì íë layout
ããð TableLayout
ããããð íë ìì
ìížì ê°ì ííë¡ íë©Žì 구ì±íë layout
ããð FrameLayout
ããããð ìŽ layoutì View륌 ë£ìŒë©Ž ê·ž ì€ íëì Viewë§ íë©Žì íì
ð gravity : ì ë ¬
ð 늬ìì€ë¥Œ ë§ë€ë©Ž R.java íìŒì ìì ë³ìë¡ ë±ë¡ëë©° ìœëìì ìŽë¥Œ ìŽì©
ð ìŠ, ìëë¡ìŽë 늬ìì€ë¥Œ ìë³íêž° ìí ë³ìë€ì êŽëŠ¬íë R íŽëì€
ð dp
ããð íŽìëì ë°ëŒ px ê° ê³ì°
ð sp
ããð êžêŒŽ í¬êž°, ëšë§ì ì€ì ì ë°ëŠ
ð margin
ããð View ìì í
ë늬 êž°ì€ ë°ê¹¥ìªœ ì¬ë°±
ð padding
ããð View ìì í
ë늬 êž°ì€ ì쪜 ì¬ë°±
ð ì
ë ¥ëë êžìì ì í ì ì
ããð í€íšëê° ë€ë¥Žê² ì¬ëŒì€ë ê²ì íìží ì ìì
ð onPause() â¡ïž onStop() â¡ïž onDestroy() â¡ïž onCreate() â¡ïž onStart() â¡ïž onResume()
ð ì¡í°ë¹í°ê° ë©ëªšëŠ¬ìì ììŽì¡ë€ê° ë€ì ë§ë€ìŽì§
ð layout-land íŽëì xml íìŒì ìë¡ê² 구ì±íŽìŒ íš
ð onSaveInstanceState ìœë°± ë©ìë륌 íµíŽ ë³ì ê°ì ì ì¥
ð ì¡í°ë¹í°ê° ì¢
ë£ëêž° ì ìí륌 ì ì¥
ð onCreate()ìì ë²ë€ ê°ì²Žë¡ ë³µì
ð ê°ë¡, ìžë¡ ì¡í°ë¹í°ê° ë€ë¥Œ ì ìêž° ë묞
ð ì¡í°ë¹í° ëìŒ, íë©Ž ë ìŽììë§ ë°êŸžê³ ì¶ë€ë©Ž?
ããð 맀ëíì€íž íìŒì < activity > íê·ž ìì configChanges ìì±ì orientation | screensize ì€ì
ããð ê·ž í onConfigurationChanged() ë©ìë ì¬ì ì
ð ê°ëší ë©ìì§ë¥Œ ì ê¹ ë³Žì¬ì€¬ë€ê° ììŽì§ë ë·°
ð Toast
ããð ì± ìì ë ìë ë·°
ð SnackBar
ããð ìë쪜ìì ì¬ëŒìë€ ëŽë €ê°ë ë·°
ð ì±ìŽ ì€íëìŽ xml ë ìŽìì ëŽì©ìŽ ë©ëªšëŠ¬ì ê°ì²Ží ëë 곌ì
ð ê°ì²Žíë xml ë ìŽììì ìì€ íìŒìì ì¬ì©íì¬ ì¶ë ¥íš
ð xml 늬ìì€ë¥Œ view ê°ì²Žë¡ ë§ë€ìŽ ë°ííë ìí
ð EditTextì addTextChangedListener()ë©ìëì íšê» Text ë³ê²œ Event ì²ëŠ¬
ð ìŽë¯žì§ê° ë€ìí íë©Ž í¬êž°ì ì¬ë¬ ëšë§êž°ì ì¶ë ¥ë ë ìëìŒë¡ í¬êž°ê° ëìŽëê±°ë ì€ìŽë€ë©° ìŽë¯žì§ì 몚ì늬 ë¶ë¶ìŽ 깚ì§ê±°ë ìê³¡ìŽ ë°ìíëë°, ìŽë¥Œ íŽê²°íŽì£Œë ë°©ë²
ð íì¥ì ìì .9륌 ë¶ì
ð ê°ë¡, ìžë¡ê° 2pxì© í° ìŽë¯žì§ë¥Œ ìë¡ ë§ë€ê³ ì볞 ìŽë¯žì§ë¥Œ ê°ìŽë°ì ë³µì¬íë©Ž ìì± ìë£
ð í°ì; ëìŽëì§ ìë ìì, ê²ì ì; ëìŽëë ìììŒë¡ 구ë¶
ð ì±ì ì€ì¹íì ë, ìëë¡ìŽë ìì€í
ìŽ ìŽ êµ¬ì±ììë€ì ëí ì 볎륌 ì구íš
ð 1. Activity
ããð íë©Žì 구ì±íë 컎í¬ëíž
ããð ì¡í°ë¹í° 맀ëì ëŒë ê°ì²Žì ìíŽ ì¡í°ë¹í° ì€íìŽëŒë ê²ìŒë¡ êŽëŠ¬ëš
ð 2. Service
ããð 백귞ëŒìŽë ìì
ì íë 컎í¬ëíž
ããð ë©ìž ì¡í°ë¹í°ìì startService() ë©ìë ížì¶
ããð ë¹ì ìì ìŒë¡ ì¢
ë£ëìŽë ìì€í
ìŽ ìë ì¬ì€í
ããð stopService() ë©ìë륌 ížì¶íì¬ ì€í ìë¹ì€ë¥Œ ì¢
ë£í ì ìì
ããð 칎í¡ìŽ ì€íëìŽìì§ ììë, íë©Žìì 볎ìŽì§ ììë ë©ìì§ë¥Œ ë°ì ì ìë ìŽì
ããð IntentService : 백귞ëŒìŽëìì ì€íëì§ë§ í ë² ì€íëê³ ëëë ìë¹ì€
ð 3. Broadcast Receiver
ããð ìì€í
ìŽë²€ížê° ë°ìí ë ì€íëê² íë 컎í¬ëíž
ããð êž°êž°ììì ëìíë ë€ë¥ž ì± Aë¡ ë¶í° í¹ì ë©ìì§ë¥Œ ë°êž° ìíŽ ì±ì ìŽ ëžë¡ëìºì€íž ìì ì륌 ë±ë¡íë©Ž A ì±ì ë©ìì§ê° ì±ìŒë¡ ì ë¬ëš
ããð registerReceiver() ë©ìëë¡ ìì€í
ì ë±ë¡
ð 4. Content Provider
ããð ì±ì ë°ìŽí°ë¥Œ ê³µì íë 컎í¬ëíž
ããð ì±ì 볎ì ë묞ì ì€ìí 구ì±ìì
ããð ë³Žíµ DB, íìŒ, SharedPreferences륌 ì ê·Œ
ããð íì©í íµë¡ë¡ ì ê·Œíêž° ìíŽìë Content ResolverëŒë ê°ì²Žë¥Œ ìŽì©íŽìŒ íš
ð ìŽ ì 볎ë€ì ì ë¶ ë§€ëíì€íž íìŒì ìì
ð Foreground
ããð ì¬ì©ììê² ëì ëë ìŒë¶ ìì
ì ìííë ìë¹ì€
ð Background
ããð ì¬ì©ìê° ì§ì ìì§ ëª»íë ìì
ì ìííë ìë¹ì€
ããð API 26 Deprecated
ããð ëì , 백귞ëŒìŽë ì²ëŠ¬ì ê¶ì¥ëë APIìž Jetpackì WorkManager ì¬ì©ì ê¶ì¥
ð Bind
ããð ë°ìžë©ë ìë¹ì€ë êµ¬ì± ììê° ìë¹ì€ì ìíž ìì©í ì ìì
ð 몚ë ìëë¡ìŽë 구ì±ìììì ì ê·Œ ê°ë¥í ì ì íŽëì€
ð 4ê°ì§ Ʞ볞 구ì±ìì, ì± íší€ì§ ìŽëŠ, ê¶í ë± ì±ì ëí íìì ìž ì ë³Žê° ë€ìŽìë íìŒ
ð ì¡í°ë¹í°ë¥Œ ì€ííë€ ë³Žë©Ž ë°ìíë ì¡í°ë¹í° ì€ë³µë¬žì ë íëŠì ì ìŽíë ê²
ð 맀ëíì€íž íìŒì activity íê·žì launchMode륌 ì€ì íë ë°©ë²
ããð standard
ããããð ì¡í°ë¹í° ì€íì ê³ì ììì¬ëŠ¬ë 몚ë
ããð singletop
ããããð ì€íì ìµììì ìë ì¡í°ë¹í°ë¥Œ ë€ì ížì¶ ì ìŽë ì€íì ììŽì§ X
ããããð ëëšžì§ë standardì ëìŒ
ããããð ë€ì ížì¶ ì onNewIntent() ì€í
ããð singletask
ããããð ìë¡ê² task륌 ìì±íê³ íŽë¹ taskì 룚ížì ì¡í°ë¹í°ê° ì¡Žì¬íê² ëš
ããããð ë€ë¥ž ì¡í°ë¹í°ë¥Œ ížì¶í ê²œì° ìŽ ë£šížìì ììŽê² ëš
ããð singleinstance
ããããð singletaskì ë§ì°¬ê°ì§ë¡ taskì 룚ížìë§ ì¡Žì¬í ì ìì§ë§, íëì taskì íëì ì¡í°ë¹í°ë§ ì¡Žì¬í ì ìì
ð Intentì Flag ì 볎륌 ì€ì íë ë°©ë²
ããð SINGLE_TOP
ããããð ì€íì ìµììì ìë ì¡í°ë¹í°ë¥Œ ë€ì ížì¶ ì ìŽë ì€íì ììŽì§ X
ããð NO_HISTORY
ããããð ìŽ ìì±ìŒë¡ ì€ì ë ì¡í°ë¹í°ë ì€íì ììŽì§ X
ããð CLEAR_TOP
ããããð ìŽ ìì±ìŒë¡ ì€ì ë ì¡í°ë¹í°ë¶í° ê°ì¥ ìì ìë ì¡í°ë¹í°ê¹ì§ 몚ë ì¢
ë£
ããããð ìŽí, ìŽ ì¡í°ë¹í°ë¥Œ íì±ííì¬ ê°ì¥ ìì ìì¹íëë¡ íš
ð ìží
íž ìì ìë ê°ì²Ž
ð ë¶ê° ë°ìŽí°ë¥Œ ë£ê±°ë ëº ì ìì
ð íì¬ ì¬ì©ëê³ ìë Appì ëí í¬êŽì ìž ì 볎륌 ì§ëê³ ìë ê°ì²Ž
ð ì± êµ¬ì± ìì ê°ì ìì
ìíì ìíì¬ ìì€í
ì ì 볎 ì ë¬ ìí ì ìííë ë©ìì§ ê°ì²Ž
ð Action + Data
ð ìíí êž°ë¥ + ìíí ëì ì 볎
ð ì¡í°ë¹í°ê° ìì±, ìŒìì ì§, ì¬ì, ì ì§, ì¬ê°, ì¢
ë£ëë ë±ì ìí ë³íì ê·žì ë°ë¥ž ìœë°± ë©ìë륌 ìŽì¹
ð New â¡ïž Run
ããð onCreate() â¡ïž onStart() â¡ïž onResume()
ð Run â¡ïž Pause
ããð onPause()
ð Pause â¡ïž Run
ããð onResume()
ð Pause â¡ïž Stop
ããð onStop()
ð Stop â¡ïž Run
ããð onRestart() â¡ïž onStart() â¡ïž onResume()
ð Stop â¡ïž End
ããð onDestroy()
ð 1. onCreate()
ããð ì¡í°ë¹í° ì²ì ìì±ë ë ížì¶
ããð ìŽì ì ì ì¥ë ì ë³Žê° ìë€ë©Ž ë²ë€ì ì°žì¡°íì¬ ë³µì ê°ë¥
ð 2. onStart()
ããð ì¡í°ë¹í°ê° íë©Žì 볎ìŽêž° ì§ì ì ížì¶ëš
ããð íë©Ž ìì ì¡í°ë¹í°ê° ì ìì ìŒë¡ 볎ìžë€ë©Ž onResume() ížì¶ëš
ð 3. onResume()
ããð ì¡í°ë¹í°ì ì¬ì©ìê° ìížìì©íêž° ë°ë¡ ì§ì ì ížì¶ëš
ð 4. onPause()
ããð ì¡í°ë¹í° í¬ì»€ì±ì ìì ìíê° ëìì ë ížì¶ëš
ããð ìŽ ë©ìëê° ëŠ¬íŽíêž° ì ìë ë€ì ì¡í°ë¹í°ë ììë ì ìêž°ì ë§€ì° ë¹šëŠ¬ ìíë í 늬íŽëìŽìŒ íš
ð 5. onStop()
ããð ì¡í°ë¹í°ê° ìë©žëê±°ë ëë€ë¥ž ì¡í°ë¹í°ê° íë©Žì ê°ë € ì¬ì©ììê² ë ìŽì ìì í 볎ìŽì§ ìì ë ížì¶ëš
ð 6. onRestart()
ããð onStop() ìŽí ë€ì ììëêž° ë°ë¡ ì§ì ì ížì¶ëš
ð 7. onDestroy()
ããð ìë©žëìŽ ììŽì§êž° ì ì ížì¶ëë©°, ì¡í°ë¹í°ê° ë°ë ë§ì§ë§ ížì¶ìŽ ëš
ð 8. onSaveInstanceState()
ããð íëŒë¯ží°ë¡ ì ë¬ëë ë²ë€ ê°ì²Žë¥Œ ìŽì©íì¬ ë°ìŽí°ë¥Œ ì ì¥
ããð onPause() ì ížì¶ëš
ð 9. onRestoreInstanceState()
ããð ë²ë€ì ì ì¥ë ë°ìŽí°ë¥Œ ìŽì©íì¬ onCreate í¹ì ìŽê³³ìì ë³µì
ããð onStart()ì onResume() ì¬ìŽì ížì¶
ð ë¶ë¶ íë©Žì ìí ë ìŽìì
ð ë ìŽìììŽë ìì€ ìœë륌 í ë²ë§ ì ìíì¬ ì¬ë¬ ì¡í°ë¹í°ìì ì¬ì¬ì©í ì ìëë¡ ë§ë ê²
ð ìœëê° ë³µì¡íŽì§ë ê²ì ë°©ì§íêž° ìíŽ ê° ë¶ë¶ íë©Žì ìœë륌 ë¶ëŠ¬ìíŽ
ð íì¬ë ëšìí íë©Ž UI륌 ìíŽ ë§ìŽ íì©íë ë ìŽìì
ð íë귞뚌ížë íì ì¡í°ë¹í° ìì ì¬ëŒê° ììŽìŒ íš
ð ì ëë¡ ëìíë ìì : íë귞뚌ížê° ë©ëªšëŠ¬ì ë§ë€ìŽì§ ìì X, ì¡í°ë¹í°ì ì¬ëŒê°ë ìì
ð íëê·žëšŒíž ë§€ëì ê° íë귞뚌ížë€ì êŽëŠ¬
ð ìží
ížë ìì€í
ì ìŽíŽíë ë°©ììŽë¯ë¡ íë귞뚌ížì ì¡í°ë¹í° ì¬ìŽìì ì ë¬íë ê²ì ë°ëì§íì§ ìì
ð íë귞뚌ížì ì¡í°ë¹í° ê° ë°ìŽí° ì ë¬ì ëšìí ë©ìë륌 ë§ë€ê³ ížì¶íë ë°©ììŒë¡ ì§í
ð ì¡í°ë¹í°ì ì¶ê°íë ë°©ë²
ããð ë·°ì ë§ì°¬ê°ì§ë¡ xml ë ìŽììì < fragment > íê·ž ì¶ê°
ããð ìì€ ìœëìì íëê·žëšŒíž ë§€ëì 륌 ìŽì©
ð íë귞뚌ížë¥Œ ì ííë íšê³Œ
ããð íëê·žëšŒíž ë§€ëì 륌 ìŽì©íì¬ ì¡í°ë¹í°ìì ì íì ì²ëŠ¬
ããð íëê·žëšŒíž êŽëŠ¬ë¥Œ ì¡í°ë¹í°ìì íêž° ë묞
ããð íë귞뚌ížê° ì§ì íë귞뚌ížë¥Œ ëì°ë ê²ìŽ X
ããð ì¡í°ë¹í°ë¥Œ íµíŽ ëììŒ íš
ð íë귞뚌ížê° ì¡í°ë¹í°ì ì¬ëŒê°ë©° ìŒìŽëë ìí ë³íì ê·žì ë°ë¥ž ìœë°± ë©ìë륌 ìŽì¹
ð New â¡ïž Run
ããð onAttach() â¡ïž onCreate() â¡ïž onCreateView() â¡ïž onActivityCreated() â¡ïž onStart() â¡ïž onResume()
ð Remove or Replace Fragment (not using Back stack)
ããð onPause() â¡ïž onStop() â¡ïž onDestroyView() â¡ïž onDestroy() â¡ïž onDetach()
ð Remove or Replace Fragment (using Back stack)
ããð onPause() â¡ïž onStop() â¡ïž onDestoryView()
ð Restore Fragment (using Back stack)
ããð (onDestroyView â¡ïž) onCreateView() â¡ïž onActivityCreated() â¡ïž onStart() â¡ïž onResume()
ð 1. onAttach()
ããð íë귞뚌ížê° ì¡í°ë¹í°ì ì°ê²°ë ë ížì¶ëš
ð 2. onCreate()
ããð íë귞뚌ížê° ìŽêž°íë ë ížì¶ëš
ããð new ì°ì°ì륌 ìŽì©íŽ ìë¡ìŽ íëê·žëšŒíž ê°ì²Žë¥Œ ë§ëë ìì ìŽ X
ð 3. onCreateView()
ããð íë귞뚌ížì êŽë šë ë·° ê³ìžµì ë§ë€ìŽì 늬íŽíš
ð 4. onActivityCreated()
ããð íë귞뚌ížì ì°ê²°ë ì¡í°ë¹í°ê° onCreate() ë©ìëì ìì
ì ìë£íì ë ížì¶ëš
ð 5. onStart()
ããð íë귞뚌ížì ì°ê²°ë ì¡í°ë¹í°ê° onStart() ëìŽ ì¬ì©ììê² íë귞뚌ížê° ë³ŽìŒ ë ížì¶ëš
ð 6. onResume()
ããð íë귞뚌ížì ì°ê²°ë ì¡í°ë¹í°ê° onResume() ëìŽ ì¬ì©ìì ìížìì©ì í ì ìì ë ížì¶ëš
ð 7. onPause()
ããð íë귞뚌ížì ì°ê²°ë ì¡í°ë¹í°ê° onPause() ëìŽ ì¬ì©ìì ìížìì©ì ì€ì§í ë ížì¶ëš
ð 8. onStop()
ããð íë귞뚌ížì ì°ê²°ë ì¡í°ë¹í°ê° onStop() ëìŽ íë©Žì ë ìŽì 볎ìŽì§ ìì ë ížì¶ëš
ð 9. onDestroyView()
ããð íë귞뚌ížì êŽë šë ë·° 늬ìì€ë¥Œ íŽì í ì ìëë¡ ížì¶ëš
ð 10. onDestroy()
ããð íë귞뚌ížì ìí륌 ë§ì§ë§ìŒë¡ ì 늬í ì ìëë¡ ížì¶ëš
ð 11. onDetach()
ããð íë귞뚌ížê° ì¡í°ë¹í°ì ì°ê²°ì ëêž° ë°ë¡ ì§ì ì ížì¶ëš
ð onPause()ì onStop() ë©ìëë ì¡í°ë¹í°ì onPause()ì onStop() ë©ìëê° ížì¶ë ëì ê°ì ìí ë©ìë
ð Back stack : íë귞뚌ížê° íë©Žì 볎ìŽì§ ìë ìê° ì ê±°ê° ìë ì ì¥íë€ ë€ì ìŽì©í ì ìê² íë êž°ë¥
ð í¹ì êž°ë¥ì ìííêž° ìíì¬ ì¬ì©ìì ìì²ì ë°ë ê²
ð ìŒë° ê¶í + ìí ê¶í
ð ìí ê¶íì ê°ìžì 볎ë ì°êŽìŽ ëìŽ ììŒë¯ë¡ íì 죌ì
ð ìë° ìœë + 늬ìì€ íìŒ
ð ìë° ìœë : ì±ì íëŠê³Œ êž°ë¥ì ì ì
ð 늬ìì€ íìŒ : ë ìŽìì/ìŽë¯žì§ ì²ëŒ 볎ì¬ì£Œêž° ìíŽ ì¬ì©íë íìŒ ë° ë°ìŽí°ë¥Œ êŽëŠ¬
ð ìëë¡ìŽë 컎íìŒë¬ê° ìì€ ìœë륌 DEX íìŒë¡ ë³ííê³ , 늬ìì€ë¥Œ 컎íìŒë 늬ìì€ë¡ ë§ëŠ
ð ìŽí, Packagerê° DEX íìŒê³Œ 컎íìŒë 늬ìì€ë¥Œ ê²°í©íì¬ APK or AABë¡ ë§ëŠ
ð êµ¬êž íë ìŽ ë±ì ë§ìŒì ë°°í¬í ì ìëë¡ ìëª
íë ì 찚륌 ê±°ì¹ í APK or AAB ííë¡ ì€í ìŽì ì
ë¡ë
ð ìëë¡ìŽëìì ëŒìŽìŒì€ ë° ë©ëªšëŠ¬ íšìšì± 묞ì ë¡ JVM ëì ì¬ì©íë ê°ì ëšžì
ð JVM곌 DVM; 몚ë JIT 컎íìŒë¬ë¥Œ ì¬ì©íì¬ êž°ê³ìŽë¡ ë²ì
ããð JIT(Just-In-Time) ë°©ì?
ããð ì± êµ¬ë ì€ì ì€ìê°ìŒë¡ 컎íìŒì ì§ííì¬ ì€ì¹ ìëê° ë¹ ë¥Žì§ë§, ì€í ìëê° ë늬ë€ë í¹ì§ì ê°ê³ ìì
ããð Trace-JIT ë°©ì?
ããð íë¡ê·žëš ì€í ì ì죌 ì¬ì©ëë ë¶ë¶ì ë°ìŽíž ìœë륌 êž°ê³ìŽë¡ 믞늬 íŽìíŽ ê²°ê³Œë¥Œ ìºìì ì ì¥íì¬ ì±ë¥ì í¥ìí JIT ë°©ì
ð êž°ì¡Žì DVMì íê³ì ì íŽê²°íêž° ìíŽì 구êžìì ìë¡ ê°ë°í ë°íì
ð 례늬í ë²ì ë¶í° ë첎ëš
ããð AOT(Aheads-Of-Time) ë°©ì?
ããð ì€ì¹ ì 컎íìŒì ì§ííì¬ ì€ì¹ ìëê° ë늬ì§ë§ ì€í ìëê° ë¹ ëŠ
ð ëê° ë²ì ìŽí ARTë AOTì JIT 컎íìŒë¬ë¥Œ íì¬íì¬ ì€ì¹ ìë ë° ì€í ìë 몚ë륌 볎ìíš
ð ìì€ ìœë íìŒ ë° ëŠ¬ìì€ íìŒì ë¹ëíê±°ë ë°°í¬íêž° ìíŽ ì¬ì©ëë ë¹ë ë° ë°°í¬ ë구
ð íë¡ì íž ìì€ì ê·žëë€ ì€ì íìŒ
ããð íë¡ì íž ìì ìë 몚ë 몚ëì ì ì©ëë ì€ì ìŽ ë€ìŽìì
ããð ìŒë°ì ìŒë¡ ìŽ íìŒì ê±°ì ìì ì íì§ ìì
ð 몚ë ìì€ì ê·žëë€ ì€ì íìŒ
ããð ê°ê°ì 몚ëì ì ì©ëë ì€ì ìŽ ë€ìŽìì
ããð ë¹ëì íìí ì€ì ì 볎ë€ìŽ ë€ìŽìì
ããð dependenciesìë ìžë¶ ëŒìŽëžë¬ëŠ¬ ì¶ê°
ããð ìë¡ìŽ 몚ëì ì¶ê°íë€ë©Ž, ê·ž 몚ëì ëí build.gradle íìŒë¡ ìë¡ ì¶ê° ëš
ð setting.gradle
ããð ì±ì ë¹ëí ë ìŽë€ 몚ëì í¬íší ê²ìžì§ì ëí ì ë³Žê° ìì
ð 몚ë : ìì€íìŒ ë° ë¹ë ì€ì ìŒë¡ 구ì±ë 몚ì
ð androidxëŒë íší€ì§ëª
ìŒë¡ ììíë©°, ê°ë°ìë€ìŽ ìœê³ ë¹ ë¥Žê² í늬í°ê° ì¢ì ì±ì ë§ë€ì ìëë¡ ëì죌ë ëŒìŽëžë¬ëŠ¬ 몚ì
ð appcompat, recyclerview, viewpager2, drawerlayout, fragment
ð appcompat : ìëë¡ìŽë ì±ì API ë 벚 ížíì± ë¬žì 륌 íŽê²°íŽ ì€
ð viewpager2 : ììŒë¡ swipeíë layout êŽë š ëŒìŽëžë¬ëŠ¬
ð drawerlayout : ì 볎ìŽë€ê° swipeíë©Ž ë±ì¥íë layout êŽë š ëŒìŽëžë¬ëŠ¬
ð ì¬ë¬ ê°ì§ ììŽí
ì ëíëŽë ë©Žìì ListViewì ë¹ì·í View
ð ë©ëªšëŠ¬ë¥Œ íšìšì ìŒë¡ ì¬ì©íëë¡ ìºì 맀컀ëìŠì 구í
ð ViewHolder, Adapter, LayoutManager
ð ListView ëì ì¬ì©íë ê²ì ê¶ì¥
ããð ê°ë¡/ìžë¡ ë°©í¥ ëªšë ì§ì
ããð ììŽí
ì ëë©ìŽì
ì²ëŠ¬ íŽëì€ ìì
ããð ViewHolder íšíŽì ì¬ì©íì¬ findViewById() ížì¶ íì ë®ì
ð ì±ì ë§ë€ë©Žì ë°ìŽí°ë¥Œ ê°ëšíê² ì ì¥íê³ ì¬ì©íê³ ì¶ì ë ì¬ì©íë êž°ë¥
ð ì± ëŽë¶ì íìŒì íë ë§ë€ìŽ ë°ìŽí°ë¥Œ ì ì¥íê±°ë ìœìŽì€ë ë°©ì
ð íì€ SQLì ì§ìíë©°, ì¡°í ìëê° ë¹ ë¥ž 몚ë°ìŒ ë°ìŽí°ë² ìŽì€
ð ì€í€ë§ë¥Œ ì
ë°ìŽíží ë, SQLiteHelper íŽëì€ ì¬ì©
ð ë©í° Thread륌 ìŽì©í ê²œì° ì¬ì©ìê° ë§ë Threadê° UI ê°ì²Žì ì ê·Œíêž° ìíì¬ Handler ê°ì²Žë¥Œ ìŽì©
ð UI êŽëŠ¬íë ë©ìž ì€ë ëì 늬ìì€ ëì ì ê·ŒìŒë¡ ìží DeadLockìŽ ë°ìí ì ììŒë¯ë¡
ð ížë€ë¬ë ë©ìžì§ë¥Œ ì ë¬íêž° ìíŽ ë©ìžì§ íì ì°šë¡ë¡ ë£ëë°, Looperê° ëœìì ë©ìž ì€ë ëìê² ì ë¬
ð Glide
ããð ìŽë¯žì§ ì²ëŠ¬ë¥Œ ìíŽ ë§ë€ìŽì§ ëŒìŽëžë¬ëŠ¬
ð Volley
ããð ì¹ ìì²ê³Œ ìëµì ëšìííêž° ìíŽ ë§ë€ìŽì§ ëŒìŽëžë¬ëŠ¬
ð Gson
ããð Json 묞ììŽì ìë° ê°ì²Žë¡ ë³íí ì ìëë¡ íë ëŒìŽëžë¬ëŠ¬
ð NotificationManager ìì€í ìë¹ì€ + NotificationCompat.Builder() ë©ìë ì¬ì©
ð ìŽë€ ìŽë²€ížì ìíŽ ížì¶ëìŽì§ë íšì
ð ê°ì²Žì ì§ë ¬íë ê°ì²Žì ëŽì©ì ë°ìŽíž ëšìë¡ ë³ííì¬ íìŒ ëë ë€ížìí¬ë¥Œ íµíŽì ì€ížëŠŒ ííë¡ ì ì¡íë ê²
ð ì§ë ¬í ì¬ì© ìŽì ë ì ì¡ ë°©ë²ì ì 겜 ìž íì ììŽ ìµì¢
목ì ì§ì ì ë¬ë ê°ì²Žë¥Œ ë°ë¡ ì¬ì©íë©Ž ëêž° ë묞
ð ìŽë í ê°ì²Žë¥Œ ì§ë ¬ííêž° ìíŽìë Serializable ìží°íìŽì€ë¥Œ 구íë§ íë©Ž ëêž°ì ìœê² ë°ìŽí°ë¥Œ ì ë¬í ì ìì
ð ìŒë°ì ìŒë¡, ìëë¡ìŽëìì SerializableìŽ Parcelable ë³Žë€ ì±ë¥ìŽ ì¢ì§ ìì Parcelableì ì¬ì©
ããð ParcelableìŽ ì±ë¥ìŽ ë ì¢ì ìŽì ë íë¡ìžì€ ê° íµì ì ì¬ì©íêž° ë묞
ããð ëí, Serializable ëŽë¶ìì 늬íëì
ì ì¬ì©íì¬ ì§ë ¬í륌 ì²ëŠ¬íêž° ë묞
ããããð 늬íëì
? 구첎ì ìž íŽëì€ íì
ì ìì§ ëª»íŽë ê·ž íŽëì€ì ë©ìë, ë³ìë€ì ì ê·Œí ì ìê² íŽì£Œë ìë° API
ããããð 늬íëì
ì ì²ëŠ¬ 곌ì ìì ë§ì ì¶ê° ê°ì²Žë¥Œ ì¬ì©íêž° ë묞ì ìŽë ìŽí ê°ë¹ì§ ìœë í°ì ê³ ëí ëììŒë¡ ì°ê²°ëìŽ ì±ë¥ ì íê° ìŒêž°ëš
ð But, ë°ëì Parcelableê° Serializableë³Žë€ ì±ë¥ì ìŒë¡ ì°ìí ê²ì ìë
ããð ì¶ê°ì ìž ë¡ì§ì 구íí Serializable ìží°íìŽì€ë Parcelableë³Žë€ ì±ë¥ìŽ ì°ìíš
ð ë°ëŒì, ìí©ì ë§ê² ì ì¬ì©íë ê²ìŽ ì€ìíš
ð JVMì GCê° ìëìŒë¡ ë©ëªšëŠ¬ë¥Œ êŽëŠ¬íŽì€ë€ë ì¥ì
ð êŽë š ëŒìŽëžë¬ëŠ¬ API륌 ì¬ì©íì¬ ë©í°ì€ë ë륌 ìœê² 구í ê°ë¥íë€ë ì¥ì
ð ìží°íëŠ¬í° ë°©ììŽêž°ì ë¹êµì ìëê° ë늬ë€ë ëšì
ð ìë°ìë íë¡ìžì€ê° ììŒë©° ì€ë ëë§ ì¡Žì¬, JVMìŽ OS ìí
ð íë¡ê·žëšìŽ ì€íëë©Ž JVMì OSë¡ë¶í° íë¡ê·žëšìŽ íìë¡ íë ë©ëªšëŠ¬ë¥Œ í ë¹ë°ì
ð 컎íìŒë¬ê° ìì€ìœë(.java)륌 ìë° ë°ìŽíž ìœë(.class)ë¡ ë³í
ð JVMìŽ ë°ìŽíž ìœë륌 êž°ê³ìŽë¡ ë³ííê³ ìží°íëŠ¬í° ë°©ììŒë¡ ì í늬ìŒìŽì
ì€í
ããð Class Loader륌 íµíŽ class íìŒë€ì JVMìŒë¡ ë¡ë©
ããð Execution Engineì íµíŽ ë¡ë©ë class íìŒë€, ìŠ, ë°ìŽíž ìœë륌 ë°ìŽë늬 ìœëë¡ ë³í
ããð íŽìë ë°ìŽíž ìœëë Runtime Data Areaì ë°°ì¹ëìŽ ì€ì§ì ìž ìíìŽ ìŽë€ì§
ããããð Method Area : 몚ë Threadì ê³µì , íŽëì€/ë³ì/static/ìì ì 볎 ë±ìŽ ì ì¥ëë ìì
ããããð Heap Area : 몚ë Threadì ê³µì , new ëª
ë ¹ìŽë¡ ìì±ë ìžì€íŽì€/ê°ì²Žê° ì ì¥ëë ìì
ããããð Stack Area : ê° Threadë§ë€ íëì© ì ì¥, 맀ê°ë³ì/ì§ìë³ì ë±ìŽ ì ì¥ëë ìì
ããããð PC Register : ê° Threadë§ë€ íëì© ì ì¥, CPU Registerì ìí ë¹ì·
ããããð Native Method Stack : ê° Threadë§ë€ íëì© ì ì¥, ë€ë¥ž ìžìŽì ë©ìë ížì¶ì ìíŽ í ë¹ëë ìì
ð ì€í곌ì ììì JVMì íìì ë°ëŒ Thread Synchronization & GC ì ê°ì êŽëŠ¬ ìì
ì ìí
ð íŽëŒìŽìžížì ìë²ê°ì ì 볎륌 ë¹ëêž°ì ìŒë¡ ì ë¬íêž° ìíŽ JavaScriptìì ì¬ì©íë íëì ëŒìŽëžë¬ëŠ¬
ð ì¹ ì¬ìŽížìì JavaScript륌 ìœê² íì©í ì ìëë¡ ëì죌ë ì€íìì€ êž°ë°ì JavaScript ëŒìŽëžë¬ëŠ¬
ð UI륌 ë§ëëë° ì¬ì©ëë ì€íìì€ êž°ë°ì JavaScript ëŒìŽëžë¬ëŠ¬
ð ì¹ ì±ì UI륌 ë§ë€êž° ìíŽ ì¬ì©íë ì€íìì€ íë¡ê·žëìëž(ìì ëê° ëì) JavaScript íë ììí¬