{"id":44701,"date":"2021-01-19T22:12:21","date_gmt":"2021-01-19T13:12:21","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=44701"},"modified":"2021-01-19T22:12:21","modified_gmt":"2021-01-19T13:12:21","slug":"%ed%94%84%eb%a0%88%ea%b7%b8%eb%a8%bc%ed%8a%b8%ec%97%90%ec%84%9c-databinding-%eb%98%90%eb%8a%94-viewbinding-%ec%82%ac%ec%9a%a9%ec%8b%9c-%eb%a9%94%eb%aa%a8%eb%a6%ac-%eb%88%84%ec%88%98%ec%99%80-%ed%95%b4","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=44701","title":{"rendered":"\ud504\ub808\uadf8\uba3c\ud2b8\uc5d0\uc11c DataBinding \ub610\ub294 ViewBinding \uc0ac\uc6a9\uc2dc \uba54\ubaa8\ub9ac \ub204\uc218\uc640 \ud574\uacb0\ubc29\ubc95"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/01\/www.charlezz.com-databinding-viewbinding-download-1.jpg\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/01\/www.charlezz.com-databinding-viewbinding-download-1.jpg\" alt=\"\" width=\"234\" height=\"215\" class=\"aligncenter size-full wp-image-44702\" \/><\/a>\ud504\ub85c\uc81d\ud2b8 \ud300\uc6d0\uc911 \ud55c\ubd84\uc774 Databinding(or ViewBinding)\uacfc \uad00\ub828\ub41c \uba54\ubaa8\ub9ac \ub204\uc218\ub97c LeakCanary\ub97c \ud1b5\ud574 \ubc1c\uacac \ud588\ub2e4\uace0 \ub9ac\ud3ec\ud305\ud574\uc8fc\uc168\ub2e4.<\/p>\n<h2>\uba54\ubaa8\ub9ac \ub204\uc218\uac00 \ubc1c\uc0dd\ud588\ub2e4!<\/h2>\n<p><del>DataBinding\uc744 \uc0ac\uc6a9\ud55c\uc9c0 \ubc8c\uc368 \uaf64 \ub9ce\uc740 \uc2dc\uac04\uc774 \uc9c0\ub0ac\ub294\ub370, \ub09c \uacc4\uc18d \uba54\ubaa8\ub9ac \ub204\uc218 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uace0 \uc788\uc5c8\ub358 \uac83\uc778\uac00..<\/del><\/p>\n<p><a href=\"https:\/\/developer.android.com\/topic\/libraries\/view-binding?hl=ko#activities\">ViewBinding \uacf5\uc2dd \ubb38\uc11c\uc5d0 \uc608\uc81c \ucf54\ub4dc<\/a>\ub97c \uc0b4\ud3b4\ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"lang:null decode:true lang:\">private var _binding: ResultProfileBinding? = null\r\n\/\/ This property is only valid between onCreateView and\r\n\/\/ onDestroyView.\r\nprivate val binding get() = _binding!!\r\n\r\noverride fun onCreateView(\r\n    inflater: LayoutInflater,\r\n    container: ViewGroup?,\r\n    savedInstanceState: Bundle?\r\n): View? {\r\n    _binding = ResultProfileBinding.inflate(inflater, container, false)\r\n    val view = binding.root\r\n    return view\r\n}\r\n\r\noverride fun onDestroyView() {\r\n    super.onDestroyView()\r\n    _binding = null\r\n}\r\n    <\/pre>\n<p>onDestroyView\uc5d0\uc11c _binding\uc758 \ub808\ud37c\ub7f0\uc2a4\ub97c \ud574\uc81c\ud558\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p><strong>Fragment\ub294 \uc0dd\uba85\uc8fc\uae30\uc640 Fragment \ub0b4\uc758 View \uc0dd\uba85\uc8fc\uae30\uac00 \ub2e4\ub974\uae30 \ub54c\ubb38\uc774\ub2e4. Fragment\ub294 View\ubcf4\ub2e4 \uc624\ub798 \uc9c0\uc18d\ub41c\ub2e4. \uadf8\ub7ec\ubbc0\ub85c onDestroyView() \uba54\uc11c\ub4dc\uc5d0\uc11c \ud574\ub2f9 \ubc14\uc778\ub529 \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4 \ub808\ud37c\ub7f0\uc2a4\ub97c \ud574\uc81c\ud574\uc918\uc57c\ud55c\ub2e4.<\/strong><\/p>\n<h2>\ud574\uacb0\ubc29\ubc95\uc740..?<\/h2>\n<p>\ubaa8\ub4e0 Fragment\ub97c \ucad3\uc544\ub2e4\ub2c8\uba70, onDestroyView\uc5d0\uc11c \ubc14\uc778\ub529 \uc778\uc2a4\ud134\uc2a4\ub97c \ud574\uc81c\ud560 \uc218\ub294 \uc5c6\ub2e4. <br \/>\nKirill Rozov\ub77c\ub294 \ubd84\uc774 \uc88b\uc740 <a href=\"https:\/\/proandroiddev.com\/make-android-view-binding-great-with-kotlin-b71dd9c87719\">\uc194\ub8e8\uc158<\/a>\uc744 \ub9cc\ub4e4\uc5b4 <a href=\"https:\/\/github.com\/kirich1409\/ViewBindingPropertyDelegate\">\ub77c\uc774\ube0c\ub7ec\ub9ac<\/a> \ud615\ud0dc\ub85c \ubc30\ud3ec\ud558\uace0 \uc788\ub2e4.<\/p>\n<p>\ud574\ub2f9 \uc194\ub8e8\uc158\uc744 \uc0ac\uc6a9\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 viewBinding() \ucf54\ub4dc\ub9cc \uc791\uc131\ud558\uba74 \ub41c\ub2e4.<\/p>\n<pre class=\"lang: decode:true \">class ProfileFragment : Fragment(R.layout.profile) {\r\n\r\n    private val viewBinding: ProfileBinding by viewBinding()\r\n\r\n    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {\r\n        super.onViewCreated(view, savedInstanceState)\r\n        \/\/ Use viewBinding\r\n    }\r\n}<\/pre>\n<p>viewBinding() \ub0b4\ubd80\ub97c \uc0b4\ud3b4\ubcf4\uba74 viewLifecycleOwner\uc5d0 Observer\ub97c \ucd94\uac00\ud558\uc5ec View \uc0dd\uba85\uc8fc\uae30\ub97c \uad00\ucc30\ud558\ub2e4\uac00, Destoryed \ud0c0\uc774\ubc0d\uc5d0 \ubc14\uc778\ub529 \ub808\ud37c\ub7f0\uc2a4\ub97c \ud574\uc81c\ud558\ub294 \uc2dd\uc73c\ub85c \uad6c\ud604\ub418\uc5b4 \uc788\ub2e4.\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; \ud504\ub85c\uc81d\ud2b8 \ud300\uc6d0\uc911 \ud55c\ubd84\uc774 Databinding(or ViewBinding)\uacfc \uad00\ub828\ub41c \uba54\ubaa8\ub9ac \ub204\uc218\ub97c LeakCanary\ub97c \ud1b5\ud574 \ubc1c\uacac \ud588\ub2e4\uace0 \ub9ac\ud3ec\ud305\ud574\uc8fc\uc168\ub2e4. \uba54\ubaa8\ub9ac \ub204\uc218\uac00 \ubc1c\uc0dd\ud588\ub2e4! DataBinding\uc744 \uc0ac\uc6a9\ud55c\uc9c0 \ubc8c\uc368 \uaf64 \ub9ce\uc740 \uc2dc\uac04\uc774 \uc9c0\ub0ac\ub294\ub370, \ub09c \uacc4\uc18d \uba54\ubaa8\ub9ac \ub204\uc218 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uace0 \uc788\uc5c8\ub358 \uac83\uc778\uac00.. ViewBinding \uacf5\uc2dd \ubb38\uc11c\uc5d0 \uc608\uc81c \ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4. private var _binding: ResultProfileBinding? = null \/\/ This property is [&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":[16],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44701"}],"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=44701"}],"version-history":[{"count":1,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44701\/revisions"}],"predecessor-version":[{"id":44703,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44701\/revisions\/44703"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=44701"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=44701"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=44701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}