{"id":44334,"date":"2020-06-27T09:36:32","date_gmt":"2020-06-27T00:36:32","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=44334"},"modified":"2020-07-07T10:07:46","modified_gmt":"2020-07-07T01:07:46","slug":"5-3-core-apis-android-entry-points","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=44334","title":{"rendered":"[Hilt] 5.3 Core APIs &#8211; Android Entry Points"},"content":{"rendered":"<p><a href=\"https:\/\/dagger.dev\/hilt\/android-entry-point\">https:\/\/dagger.dev\/hilt\/android-entry-point<\/a><\/p>\n<hr \/>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/06\/1078edcee19384aeeaa25f053a09c82c.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/06\/1078edcee19384aeeaa25f053a09c82c-236x300.png\" alt=\"\" width=\"236\" height=\"300\" class=\"aligncenter size-medium wp-image-44317\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/06\/1078edcee19384aeeaa25f053a09c82c-236x300.png 236w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/06\/1078edcee19384aeeaa25f053a09c82c-768x975.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/06\/1078edcee19384aeeaa25f053a09c82c-807x1024.png 807w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/06\/1078edcee19384aeeaa25f053a09c82c.png 1145w\" sizes=\"(max-width: 236px) 100vw, 236px\" \/><\/a><\/p>\n<h1>5.3 Core APIs &#8211; Android Entry Points<\/h1>\n<p>Gradle \ud50c\ub7ec\uadf8\uc778\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \uac00\uc815\ud558\uace0 \uc124\uba85\ud558\uace0 \uc788\ub2e4. \ub9cc\uc57d \ud50c\ub7ec\uadf8\uc778\uc744 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294\ub2e4\uba74 Gradle \uc124\uc815\ud558\uae30 \uc139\uc158\uc744 \ucc38\uc870\ud558\uc790.<\/p>\n<h2>\uc9c0\uc6d0\ud558\ub294 Android \ud0c0\uc785<\/h2>\n<p>Application\uc5d0\uc11c \uba64\ubc84 \uc8fc\uc785\uc774 \uac00\ub2a5\ud558\uac8c \uc124\uc815\ud558\uace0 \ub098\uba74, \ub2e4\ub978 \uc548\ub4dc\ub85c\uc774\ub4dc \ud074\ub798\uc2a4\ub4e4\uc5d0\uc11c\ub3c4 @AndroidEntryPoint \uc5b4\ub178\ud14c\uc774\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec \uba64\ubc84 \uc8fc\uc785\uc744 \ud558\ub294 \uac83\uc774 \uac00\ub2a5\ud574\uc9c4\ub2e4. @AndroidEntryPoint\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud0c0\uc785\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<ul>\n<li>Activity<\/li>\n<li>Fragment<\/li>\n<li>View<\/li>\n<li>Service<\/li>\n<li>BroadcastReceiver<\/li>\n<\/ul>\n<p>Hilt\uc640 ViewModel\uc758 \uc0ac\uc6a9\uc740 \uc9c1\uc811\uc801\uc73c\ub85c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ub300\uc2e0\uc5d0 Jetpack extension\uc744 \ud1b5\ud574 \uc9c0\uc6d0\ud55c\ub2e4. \ub2e4\uc74c \uc608\uc81c\ub294 \uc5b4\ub5bb\uac8c Activity\uc5d0 \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ucd94\uac00 \ud560 \uc218 \uc788\ub294\uc9c0 \ubcf4\uc5ec\uc900\ub2e4. \ub2e4\ub978 \ud0c0\uc785\uc758 \uacbd\uc6b0\ub3c4 Activity\uc640 \ub3d9\uc77c\ud55c \ubc29\ubc95\uc73c\ub85c \uc9c4\ud589\ub41c\ub2e4.<\/p>\n<p>Activity\uc5d0\uc11c \uba64\ubc84 \uc8fc\uc785\uc744 \ud558\uae30 \uc704\ud574\uc11c @AndroidEntryPoint\ub97c \ucd94\uac00 \ud558\uc790.<\/p>\n<pre><code class=\"language-kotlin\">@AndroidEntryPoint\r\nclass MyActivity : MyBaseActivity() {\r\n    @Inject lateinit var bar: Bar \/\/ ApplicationComponent \ub610\ub294 ActivityComponent\uc73c\ub85c \ubd80\ud130 \uc758\uc874\uc131\uc774 \uc8fc\uc785\ub41c\ub2e4.\r\n    \r\n    override fun onCreate() {\r\n      \/\/ super.onCreate()\uc5d0\uc11c \uc758\uc874\uc131 \uc8fc\uc785\uc774 \ubc1c\uc0dd\ud55c\ub2e4.\r\n      super.onCreate()\r\n\r\n      \/\/ Do something with bar ...\r\n    }\r\n}\r\n<\/code><\/pre>\n<table style=\"width: 100%; border-collapse: collapse; background-color: #e6ffff;\">\n<tbody>\n<tr>\n<td style=\"width: 100%;\"><em>Note : Hilt\ub294 \ud604\uc7ac ComponentActivity\ub97c \uc0c1\uc18d\ud55c Activity\ub9cc \uc9c0\uc6d0\ud558\uace0 \uc788\uace0 Fragment\uc758 \uacbd\uc6b0 androidx \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 Fragment\ub97c \uc0c1\uc18d\ud55c \uacbd\uc6b0\uc5d0\ub9cc \uc9c0\uc6d0\ud55c\ub2e4. \ud604\uc7ac \uc548\ub4dc\ub85c\uc774\ub4dc \ud50c\ub7ab\ud3fc\uc5d0 \uc788\ub294 Fragment\ub294 deprecated\ub41c \uc0c1\ud0dc\ub2e4.<\/em><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>\uc720\uc9c0\ub418\ub294 Fragment<\/h3>\n<p>Fragment\uc758 onCreate() \uba54\uc11c\ub4dc\uc5d0\uc11c setRetainInstance(true)\ub97c \ud638\ucd9c\ud558\uba74 \uad6c\uc131 \ubcc0\uacbd\uc774 \ubc1c\uc0dd\ud574\ub3c4 Fragment\uac00 \uc18c\uba78-\uc7ac\uc0dd\uc131 \ub418\uc9c0 \uc54a\uace0 \uc778\uc2a4\ud134\uc2a4\uac00 \uc720\uc9c0\ub41c\ub2e4.<\/p>\n<p>Hilt\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud558\ub294 Fragment\ub294 (\uc758\uc874\uc131 \uc8fc\uc785\uc758 \ucc45\uc784\uc774 \uc788\ub294) \ucef4\ud3ec\ub10c\ud2b8\uc5d0 \ub300\ud55c \ucc38\uc870\ub97c \uac00\uc9c0\uace0 \uc788\uace0 \ud574\ub2f9 \ucef4\ud3ec\ub10c\ud2b8\ub294 \uc774\uc804 Activity\uc758 \uc778\uc2a4\ud134\uc2a4\uc5d0 \ub300\ud55c \ucc38\uc870\ub97c \uac00\uc9c0\uace0 \uc788\uae30 \ub54c\ubb38\uc5d0 \uc808\ub300\ub85c Fragment \uc778\uc2a4\ud134\uc2a4\uac00 \uc720\uc9c0\ub418\uc11c\ub294 \uc548\ub41c\ub2e4. \ub610\ud55c Fragment\uc5d0 \uc8fc\uc785\ub41c \uc2a4\ucf54\ud504 \ub41c \ubc14\uc778\ub529 \ubc0f \ud504\ub85c\ubc14\uc774\ub354\ub294 Hilt\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud558\ub294 Fragment\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc720\uc9c0\ub420 \uacbd\uc6b0 \uba54\ubaa8\ub9ac \ub204\uc218\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4. Hilt\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud558\ub294 Fragment\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc720\uc9c0\ub418\uc9c0 \uc54a\ub3c4\ub85d \ud558\uae30\uc704\ud574, Hilt\uc640 Fragment\ub97c \uac19\uc774 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 Fragment\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc720\uc9c0\ub418\uba74 \uad6c\uc131 \ubcc0\uacbd\uc2dc \ub7f0\ud0c0\uc784 \uc608\uc678\uac00 \ubc1c\uc0dd\ud55c\ub2e4.<\/p>\n<p>Hilt\ub97c \uc0ac\uc6a9\ud558\ub294 Activity\uc5d0 Hilt\uc5c6\uc774 Fragment\ub9cc \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uc5d0\ub294 Fragment\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc720\uc9c0\ub420 \uc218 \uc788\ub2e4. \ud558\uc9c0\ub9cc \ud574\ub2f9 Fragment\uac00 Hilt\ub97c \uc0ac\uc6a9\ud558\ub294 \ud558\uc704 Fragment\ub97c \ud3ec\ud568\ud55c\ub2e4\uba74 \ub9c8\ucc2c\uac00\uc9c0\ub85c \uad6c\uc131 \ubcc0\uacbd\uc2dc \ub7f0\ud0c0\uc784 \uc608\uc678\uac00 \ubc1c\uc0dd\ud558\uac8c \ub41c\ub2e4.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; background-color: #e6ffffff;\">\n<tbody>\n<tr>\n<td style=\"width: 100%;\"><em>Note : \uad8c\uc7a5\ud558\uc9c0\ub294 \uc54a\uc9c0\ub9cc, Hilt\ub97c \uc0ac\uc6a9\ud558\ub294 Fragment\ub4e4\uc740 \ub3d9\uc77c\ud55c Activity\uc758 \uc778\uc2a4\ud134\uc2a4\ub85c\ubd80\ud130 \ub5a8\uc5b4\uc84c\ub2e4\uac00 \ub2e4\uc2dc \ubd99\uc744 \uc218 \uc788\ub2e4. Hilt\ub97c \uc0ac\uc6a9\ud558\ub294 Fragment\ub294 onAttach() \uba54\uc11c\ub4dc\ub97c \ucc98\uc74c \ud638\ucd9c \ud560 \ub54c\ub9cc \uc758\uc874\uc131 \uc8fc\uc785\uc774 \uc218\ud589\ub41c\ub2e4. \uc720\uc9c0\ub41c Fragment\uac00 \ub2e4\ub978 Activity \uc778\uc2a4\ud134\uc2a4\uc5d0 \ub2e4\uc2dc \ubd99\uc744 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \uc774\ub294 Fragment\ub97c \uc720\uc9c0\ud558\ub294 \uac83\uacfc \ub3d9\uc77c\ud558\uc9c0 \uc54a\ub2e4. \ub2e4\uc2dc \ud55c\ubc88 \uac15\uc870\ud558\uc9c0\ub9cc \uc774 \ubc29\ubc95\uc740 \uad8c\uc7a5\ud558\uc9c0 \uc54a\uc73c\uba70, \uac01 \uc0ac\uc6a9\ubc95\uc5d0 \ub300\ud574 \uc0c8\ub85c\uc6b4 Fragment \uc778\uc2a4\ud134\uc2a4\ub97c \ub9cc\ub4dc\ub294 \uac83\uc774 \uac04\ub2e8\ud558\ub2e4.<\/em><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Fragment \ubc14\uc778\ub529\uacfc View<\/h3>\n<p>\uae30\ubcf8\uc801\uc73c\ub85c ApplicationComponent \uc640 ActivityComponent \ubc14\uc778\ub529\uc740 View\uc5d0 \uc8fc\uc785\ub420 \uc218 \uc788\ub2e4. Fragment\uc5d0\uc11c \uc774\ub97c \uac00\ub2a5\ud558\uac8c \ud558\uae30 \uc704\ud574\uc11c\ub294 @WithFragmentBindings \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ud074\ub798\uc2a4\uc5d0 \ucd94\uac00\ud574\uc57c \ud55c\ub2e4.<\/p>\n<pre><code class=\"language-kotlin\">@AndroidEntryPoint\r\n@WithFragmentBindings\r\nclass MyView : MyBaseView {\r\n    \/\/ ApplicationComponent, ActivityComponent, FragmentComponent,\r\n    \/\/ ViewComponent\uc758 \ubc14\uc778\ub529\ub4e4\ub85c\ubd80\ud130 \uc758\uc874\uc131 \uc8fc\uc785\uc744 \ubc1b\uc744 \uc218 \uc788\uc74c\r\n    @Inject lateinit var bar: Bar\r\n    \r\n    constructor(context: Context) : super(context)\r\n    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)\r\n\r\n    init {\r\n        \/\/ Do something with bar ...\r\n    }\r\n\r\n    override fun onFinishInflate() {\r\n        super.onFinishInflate();\r\n\r\n        \/\/ Find &amp; assign child views from the inflated hierarchy.\r\n    }\r\n}\r\n<\/code><\/pre>\n<ol>\n<li>\uc9c0\uc6d0\ud558\ub294 \ub2e4\ub978 \uc548\ub4dc\ub85c\uc774\ub4dc \ud074\ub798\uc2a4\uc640\ub294 \ub2e4\ub974\uac8c BroadcastReceiver\ub9cc\uc758 Dagger \ucef4\ud3ec\ub10c\ud2b8\ub97c \uac00\uc9c0\uace0 \uc788\uc9c0 \uc54a\uace0 \ub300\uc2e0\uc5d0 ApplicationComponent\ub85c\ubd80\ud130 \uac04\ub2e8\ud788 \uc758\uc874\uc131\uc744 \uc8fc\uc785 \ubc1b\ub294\ub2e4.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/dagger.dev\/hilt\/android-entry-point 5.3 Core APIs &#8211; Android Entry Points Gradle \ud50c\ub7ec\uadf8\uc778\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \uac00\uc815\ud558\uace0 \uc124\uba85\ud558\uace0 \uc788\ub2e4. \ub9cc\uc57d \ud50c\ub7ec\uadf8\uc778\uc744 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294\ub2e4\uba74 Gradle \uc124\uc815\ud558\uae30 \uc139\uc158\uc744 \ucc38\uc870\ud558\uc790. \uc9c0\uc6d0\ud558\ub294 Android \ud0c0\uc785 Application\uc5d0\uc11c \uba64\ubc84 \uc8fc\uc785\uc774 \uac00\ub2a5\ud558\uac8c \uc124\uc815\ud558\uace0 \ub098\uba74, \ub2e4\ub978 \uc548\ub4dc\ub85c\uc774\ub4dc \ud074\ub798\uc2a4\ub4e4\uc5d0\uc11c\ub3c4 @AndroidEntryPoint \uc5b4\ub178\ud14c\uc774\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec \uba64\ubc84 \uc8fc\uc785\uc744 \ud558\ub294 \uac83\uc774 \uac00\ub2a5\ud574\uc9c4\ub2e4. @AndroidEntryPoint\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud0c0\uc785\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[28],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44334"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=44334"}],"version-history":[{"count":4,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44334\/revisions"}],"predecessor-version":[{"id":44383,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44334\/revisions\/44383"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=44334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=44334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=44334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}