{"id":180,"date":"2018-04-08T14:55:33","date_gmt":"2018-04-08T05:55:33","guid":{"rendered":"http:\/\/www.charlezz.com\/?p=180"},"modified":"2018-04-08T14:55:33","modified_gmt":"2018-04-08T05:55:33","slug":"aac-livedata-%ec%9d%98%ec%97%ad","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=180","title":{"rendered":"AAC &#8211; LiveData (\uc758\uc5ed)"},"content":{"rendered":"<h1><a href=\"https:\/\/developer.android.com\/reference\/android\/arch\/lifecycle\/LiveData.html\">LiveData<\/a><\/h1>\n<p>LiveData\ub294 \uc0dd\uba85\uc8fc\uae30\ub97c \uc54c \uc218 \uc788\ub294\u00a0\ub370\uc774\ud130 \ud640\ub354 \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4. \ubb34\uc2a8 \ub73b\uc774\ub0d0\uba74 \uc635\uc800\ubc84\uac00 LifecycleOwner\uc5d0 \ucd94\uac00 \ub420 \uc218 \uc788\uace0, LifecycleOwner\uac00 \ud65c\uc131\ud654 \ub418\uc5b4\uc788\uc744\ub54c \ub798\ud551\ub41c \ub370\uc774\ud130\ub4e4\uc758 \uc218\uc815\uc0ac\ud56d\uc5d0 \ub300\ud55c \uc54c\ub9bc\uc744 \ubc1b\uc744 \uc218 \uc788\uc74c\uc744 \ub73b\ud569\ub2c8\ub2e4. \uc0c1\ud0dc\uac00 STARTED \ub610\ub294 RESUMED\uc774\uba74 LifecycleOwner\ub294 \ud65c\uc131\uc0c1\ud0dc \uc785\ub2c8\ub2e4. observeForever\uc5d0 \uc758\ud574 \ucd94\uac00\ub41c observer\ub294 \ud56d\uc0c1 \ud65c\uc131\ud654 \ub41c \uac83\uc73c\ub85c \uac04\uc8fc\ub418\ubbc0\ub85c \uc218\uc815\ub41c \ub0b4\uc6a9\uc5d0 \ub300\ud574 \ud56d\uc0c1 \uc54c\ub9bc\uc744 \ubc1b\uc744 \uc218 \uc788\uac8c \ub418\uc9c0\ub9cc, \uc774\ub7ec\ud55c \uc635\uc800\ubc84\ub294 \ubc18\ub4dc\uc2dc \uc218\ub3d9\uc73c\ub85c removeObserver\ub97c \ud638\ucd9c\ud574\uc918\uc57c\ud569\ub2c8\ub2e4.<br \/>\n\uc0dd\uba85\uc8fc\uae30\uac00 \ucd94\uac00 \ub41c \uc635\uc800\ubc84\ub294 \ud574\ub2f9 \uc0dd\uba85\uc8fc\uae30\uac00 DESTROYED\ub85c \uc804\ud658\ub418\uba74 \uc790\ub3d9\uc73c\ub85c \uc81c\uac70 \ub429\ub2c8\ub2e4. \uc774\ub294 LiveData\ub97c \uc548\uc804\ud558\uac8c \uad00\ucc30\ud558\uace0 \uba54\ubaa8\ub9ac \ub204\uc218\uc5d0 \uad00\ud574 \uac71\uc815\ud560 \ud544\uc694\uac00 \uc5c6\uc73c\uba70 \ud2b9\ud788 \uc561\ud2f0\ube44\ud2f0\ub098 \ud504\ub808\uadf8\uba3c\ud2b8\ub4f1\uc744 \uc0ac\uc6a9\ud560 \ub54c \uc720\uc6a9\ud569\ub2c8\ub2e4. \ub610\ud55c \uac1d\uccb4\uac00 \ud30c\uad34 \ub420 \ub54c \uc989\uc2dc \uad6c\ub3c5\ucde8\uc18c(Unsuscribed)\uac00 \ub429\ub2c8\ub2e4.<br \/>\n\ucd94\uac00\uc801\uc73c\ub85c LiveData\ub294 onActive()\uc640 onInactive() \uba54\uc18c\ub4dc\ub97c \uac00\uc9c0\uace0 \uc788\ub294\ub370 \uc774 \uba54\uc11c\ub4dc\ub97c \ud65c\uc6a9\ud558\uc5ec \ud65c\uc131 \uad00\ucc30\uc790 \uc218\uac00 0 \uacfc 1 \uc0ac\uc774\uc5d0\uc11c \ubcc0\uacbd \ub420 \ub54c \uc54c\ub9bc\uc744 \ubc1b\uc2b5\ub2c8\ub2e4. \uc774\ub85c \uc778\ud574 LiveData\ub294 \uc774 \uac1d\uccb4\ub97c \uad00\ucc30\uc911\uc778(\ucc38\uc870\uc911\uc778) observer\uac00 \uc5c6\uc744\ub54c \ubb34\uac70\uc6b4 \ub9ac\uc18c\uc2a4\ub97c \ud574\uc81c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n\uc774\ud074\ub798\uc2a4\ub294 ViewModel\uc758 \uac1c\ubcc4 \ub370\uc774\ud130 \ud544\ub4dc\ub97c \ubcf4\uc720\ud558\ub3c4\ub85d \uc124\uacc4\ub418\uc5c8\uc9c0\ub9cc \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc758 \ub2e4\ub978 \ubaa8\ub4c8\uac04\uc5d0 \ub370\uc774\ud130\ub97c \ubd84\ub9ac \ub41c \ubc29\uc2dd\uc73c\ub85c \uacf5\uc720\ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n&nbsp;<\/p>\n<h3>LiveData \uc0ac\uc6a9\uc2dc \uc7a5\uc810<\/h3>\n<ul>\n<li>Data\uc640 UI\uac04 \ub3d9\uae30\ud654<\/li>\n<li>\uba54\ubaa8\ub9ac \ub204\uc218\ubc29\uc9c0<\/li>\n<li>\uc561\ud2f0\ube44\ud2f0\uac00 \uc885\ub8cc\ub428\uc73c\ub85c \uc778\ud55c \ud06c\ub798\uc26c\ubc29\uc9c0<\/li>\n<li>\uc218\ub3d9\uc801\uc778 \uc0dd\uba85\uc8fc\uae30 \uad00\ub9ac \ud544\uc694\uc5c6\uc74c<\/li>\n<li>\ud56d\uc0c1 \ucd5c\uc2e0\uc758 \ub370\uc774\ud130<\/li>\n<li>UI \ucee8\ud2b8\ub864\ub7ec\ub4e4\uc758 \uc0c1\ud0dc\ubcc0\uacbd\uc774 \uc26c\uc6c0<\/li>\n<li>\uc790\uc6d0\uacf5\uc720<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>MediatorLiveData<\/h2>\n<p>LiveData\uc758 \uc11c\ube0c\ud074\ub798\uc2a4\ub85c \u00a0\ub2e4\ub978 LiveData\uac1d\uccb4\uc758 \uc0c1\ud0dc\ub97c \uad00\ucc30\ud558\uace0\u00a0onChanged\ub85c \ubd80\ud130 \uc774\ubca4\ud2b8\ub97c \ubc1b\uc744 \uc218 \uc788\uac8c \ub41c\ub2e4.<br \/>\n\uc774 \ud074\ub798\uc2a4\ub294 \uc815\ud655\ud558\uac8c active\/inactive \uc0c1\ud0dc\ub97c LiveData \uac1d\uccb4 \uc18c\uc2a4\uc5d0\uac8c \uc804\ub2ec\ud55c\ub2e4.<br \/>\n\uc608\ub97c\ub4e4\uba74 2\uac1c\uc758 LiveData\uac1d\uccb4\uac00 \uc788\uace0 \uc774\uac78 liveData1 , liveData2\ub77c\uace0 \uce58\uc790.<br \/>\n\uadf8\ub9ac\uace0 \uc6b0\ub9ac\ub294 \uc774 \ub450\uac1c\uc758 \uc624\ube0c\uc81d\ud2b8\ub97c \ud558\ub098\ub85c \ud569\uce58\uace0 \uc2f6\ub2e4. liveDataMerger\ub77c\ub294 \uc774\ub984\uc744 \uac00\uc9c4 MediatorLiveData\uc624\ube0c\uc81d\ud2b8\ub85c<br \/>\n\uadf8\ub7ec\uba74 \uac01\uac01\uc73c\ub85c \ubd80\ud130 onChanged \ucf5c\ubc31\uc744 \ubc1b\uc744\uc218 \uc788\uace0 \uc138\ub85c\uc6b4 \uac12\uc744 \uc801\uc6a9\ud560 \uc218\ub3c4 \uc788\ub2e4.<br \/>\n&nbsp;<\/p>\n<pre class=\"lang:java decode:true\"> LiveData liveData1 = ...;\n LiveData liveData2 = ...;\n MediatorLiveData liveDataMerger = new MediatorLiveData&lt;&gt;();\n liveDataMerger.addSource(liveData1, value -&gt; liveDataMerger.setValue(value));\n liveDataMerger.addSource(liveData2, value -&gt; liveDataMerger.setValue(value));\n<\/pre>\n<p>10\uac1c\uc758 \uac12\ub4e4\ub9cc liveData1\uc5d0\uac8c \uc801\uc6a9\ud55c\ub2e4 \uce58\uace0, 10\uac1c\uc758 \uac12 \uc801\uc6a9\ud6c4\uc5d0 liveData1\uc758 \ucf5c\ubc31\uc218\uc2e0\uc744 \ub04a\ub3c4\ub85d \ud55c\ub2e4.<br \/>\n&nbsp;<\/p>\n<pre class=\"lang:java decode:true\">liveDataMerger.addSource(liveData1, new Observer() {\n      private int count = 1;\n      @Override public void onChanged(@Nullable Integer s) {\n          count++;\n          liveDataMerger.setValue(s);\n          if (count &gt; 10) {\n              liveDataMerger.removeSource(liveData1);\n          }\n      }\n });<\/pre>\n<p>&nbsp;<br \/>\n&nbsp;<\/p>\n<h2>MutableLiveData<\/h2>\n<p>\ucd94\uc0c1\ud074\ub798\uc2a4\uc778 LiveData\ub97c \uc0c1\uc18d\ud558\uc5ec setValue\uc640 postValue\uba54\uc18c\ub4dc\ub97c \ub178\ucd9c\ud55c \ud074\ub798\uc2a4\uc774\ub2e4.<br \/>\n&nbsp;<\/p>\n<h3>postValue<\/h3>\n<p>postValue\ub294 \uba54\uc778\uc2a4\ub808\ub4dc\uc5d0\uac8c \uc8fc\uc5b4\uc9c4 \uac12\uc744 \uc124\uc815\ud55c\ub2e4.<\/p>\n<pre class=\"lang:java decode:true prettyprint\">liveData.postValue(\"a\");\nliveData.setValue(\"b\");<\/pre>\n<p>\uc704\uc640 \uac19\uc740 \uacbd\uc6b0 b\uac00 \uba3c\uc800 \uc801\uc6a9\ub418\uace0 a\uac00 \ud6c4\uc5d0 \uc624\ubc84\ub77c\uc774\ub4dc \ub418\uc5b4 a\ub85c \ub370\uc774\ud130\uac00 \uc124\uc815\ub41c\ub2e4.<br \/>\n&nbsp;<\/p>\n<h3>setValue<\/h3>\n<p>setValue\ub294 \ud65c\uc131\ud654\ub41c \uc635\uc800\ubc84\ub4e4\uc5d0\uac8c \uac12\uc744 \uc804\ub2ec\ud558\uac8c \ub41c\ub2e4. \uc774 \uba54\uc18c\ub4dc\ub294 \ubc18\ub4dc\uc2dc \uba54\uc778\uc2a4\ub808\ub4dc\uc5d0\uc11c \ubd88\ub824\uc57c \ud558\uba70 \ubc31\uadf8\ub77c\uc6b4\ub4dc \uc2a4\ub808\ub4dc\uc5d0\uc11c \uac12\uc744 \uc124\uc815\ud558\uace0 \uc2f6\ub2e4\uba74 \ubc18\ub4dc\uc2dc postValue\ub97c \ud638\ucd9c\ud558\ub3c4\ub85d\ud558\uc790.<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>LiveData LiveData\ub294 \uc0dd\uba85\uc8fc\uae30\ub97c \uc54c \uc218 \uc788\ub294\u00a0\ub370\uc774\ud130 \ud640\ub354 \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4. \ubb34\uc2a8 \ub73b\uc774\ub0d0\uba74 \uc635\uc800\ubc84\uac00 LifecycleOwner\uc5d0 \ucd94\uac00 \ub420 \uc218 \uc788\uace0, LifecycleOwner\uac00 \ud65c\uc131\ud654 \ub418\uc5b4\uc788\uc744\ub54c \ub798\ud551\ub41c \ub370\uc774\ud130\ub4e4\uc758 \uc218\uc815\uc0ac\ud56d\uc5d0 \ub300\ud55c \uc54c\ub9bc\uc744 \ubc1b\uc744 \uc218 \uc788\uc74c\uc744 \ub73b\ud569\ub2c8\ub2e4. \uc0c1\ud0dc\uac00 STARTED \ub610\ub294 RESUMED\uc774\uba74 LifecycleOwner\ub294 \ud65c\uc131\uc0c1\ud0dc \uc785\ub2c8\ub2e4. observeForever\uc5d0 \uc758\ud574 \ucd94\uac00\ub41c observer\ub294 \ud56d\uc0c1 \ud65c\uc131\ud654 \ub41c \uac83\uc73c\ub85c \uac04\uc8fc\ub418\ubbc0\ub85c \uc218\uc815\ub41c \ub0b4\uc6a9\uc5d0 \ub300\ud574 \ud56d\uc0c1 \uc54c\ub9bc\uc744 \ubc1b\uc744 [&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\/180"}],"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=180"}],"version-history":[{"count":0,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/180\/revisions"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=180"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=180"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}