{"id":277954,"date":"2016-04-08T22:05:03","date_gmt":"2016-04-08T18:05:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=277954"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=277954","title":{"rendered":"\u041a\u044e\u0432\u0435\u0442\u044b Android, \u0427\u0430\u0441\u0442\u044c 2: SDK \u0438 Libraries"},"content":{"rendered":"<p>       \u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043f\u043e\u0434 Android, \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u0447\u0435\u043a\u0443. \u0428\u0430\u0433 \u0432\u043b\u0435\u0432\u043e \/ \u0448\u0430\u0433 \u0432\u043f\u0440\u0430\u0432\u043e \u2014 \u0438 \u0432\u043e\u0442 \u043f\u0440\u043e\u0448\u0435\u043b \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0447\u0430\u0441 \u0437\u0430 \u0434\u0435\u0431\u0430\u0433\u043e\u043c. \u041a\u044e\u0432\u0435\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0443\u0433\u043e\u0434\u043d\u043e: \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0431\u0430\u0433\u043e\u0432 \u0432 SDK \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c (\u0434\u0430-\u0434\u0430, <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/app\/Fragment.html#getFragmentManager%28%29\">Fragment.getFragmentManager()<\/a>, \u044d\u0442\u043e \u044f \u043e \u0442\u0435\u0431\u0435).<\/p>\n<p>  \u0412 <a href=\"https:\/\/habrahabr.ru\/post\/279811\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u0431\u044b\u043b\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043a\u044e\u0432\u0435\u0442\u044b \u00ab\u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438\u00bb SDK, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0433\u043e\u0434\u0438\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0436\u0435 \u0440\u0430\u0437 \u043a\u044e\u0432\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0433\u043b\u0443\u0431\u0436\u0435, \u043f\u043e\u043c\u0443\u0434\u0440\u0451\u043d\u0435\u0435 \u0438 \u043f\u043e\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0435\u0435. \u0422\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 <a href=\"http:\/\/inthecheesefactory.com\/blog\/retrofit-2.0\/en\">Retrofit 2<\/a> &#038; <a href=\"https:\/\/github.com\/google\/gson\">Gson<\/a>. <br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/907\/5f9\/f9f\/9075f9f9fefe6985f639b6ae3b6230c7.jpg\" alt=\"image\"\/><br \/>  <a name=\"habracut\"><\/a><\/p>\n<h4>1. <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/widget\/GridLayout.html\">GridLayout<\/a> \u043d\u0435 \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 <b>layout_weight<\/b><\/h4>\n<p>  <\/p>\n<h5>\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f<\/h5>\n<p>  \u0418\u043d\u043e\u0433\u0434\u0430 \u0442\u0430\u043a \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441 \u043a\u0443\u0447\u0435\u0439 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0431\u044b\u0447\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/50c\/4ee\/268\/50c4ee268d6c14295f93743c5db705da.png\" alt=\"image\"\/>  <\/div>\n<\/div>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <b>landscape <\/b>\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u044b. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u0447\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0442\u0430\u043a\u043e\u0433\u043e:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0424\u043e\u0440\u043c\u0430 \u0434\u043b\u044f landscape<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/16a\/9e2\/ee8\/16a9e2ee81e1c5940ed7fe6974bf4480.png\" alt=\"image\"\/>  <\/div>\n<\/div>\n<p>  \u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u0436\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 50 \u043d\u0430 50? \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e <a href=\"http:\/\/developer.android.com\/intl\/ru\/training\/improving-layouts\/optimizing-layout.html\">\u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432<\/a>:  <\/p>\n<ul>\n<li>\u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 <a href=\"http:\/\/developer.android.com\/reference\/android\/widget\/LinearLayout.html\">LinearLayout<\/a><\/li>\n<li><a href=\"http:\/\/developer.android.com\/reference\/android\/widget\/RelativeLayout.html\">RelativeLayout<\/a><\/li>\n<li><a href=\"http:\/\/developer.android.com\/reference\/android\/widget\/TableLayout.html\">TableLayout<\/a> \u0438\u043b\u0438 <a href=\"http:\/\/developer.android.com\/reference\/android\/widget\/GridLayout.html\">GridLayout<\/a><\/li>\n<\/ul>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043d\u0438 \u0432\u0441\u0435 \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438:   <\/p>\n<ul>\n<li>\u041e\u0431\u0438\u043b\u0438\u0435 <b>LinearLayout<\/b> \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043c\u043e\u043d\u0441\u0442\u0440\u0443\u043e\u0437\u043d\u043e\u0441\u0442\u0438 xml&#8217;\u043a\u0438<s>, \u0430 \u043e\u043d\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0441\u043c\u0435\u0440\u0442\u0435 \u043a\u043e\u0442\u0438\u043a\u043e\u0432<\/s>.<\/li>\n<li><b>RelativeLayout<\/b> \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c (\u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u0432 \u0444\u043e\u0440\u043c\u0435 \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u0439 \u0435\u0449\u0451 \u0437\u0430\u0434\u0430\u0447\u043a\u043e\u0439. \u041f\u0440\u043e <b>View.setVisibility(View.GONE)<\/b> \u044f \u0438 \u0432\u043e\u0432\u0441\u0435 \u043c\u043e\u043b\u0447\u0443).<\/li>\n<li>\u041d\u0443 \u0430 <b>TableLayout <\/b>\u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u2026 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442, \u043d\u043e \u0440\u0435\u0434\u043a\u043e. \u042f \u0442\u0430\u043a\u0438\u0445 \u043b\u044e\u0434\u0435\u0439 \u043d\u0435 \u0437\u043d\u0430\u044e.<\/li>\n<\/ul>\n<p>  \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0433\u0438\u044e \u0447\u0438\u0441\u043b\u0430 <a href=\"http:\/\/stackoverflow.com\/questions\/6975607\/what-does-layout-height-0dp-mean\">0dp &#038; weight=1<\/a>, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0433\u0438\u0431\u043a\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430. \u041d\u0438 <b>TableLayout<\/b>, \u043d\u0438 <b>RelativeLayout <\/b>\u0442\u0443\u0442 \u0432\u0430\u043c \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442. \u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0436\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 <a href=\"http:\/\/stackoverflow.com\/questions\/13313996\/what-does-ellipsize-mean-in-android\">TextView.setEllipsize()<\/a>, \u043d\u0430\u0447\u043d\u0443\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u0431\u043e\u043b\u044c. <br \/>  \u0418 \u0442\u0443\u0442 \u0432\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u043e\u0434\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u044f \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 <b>GridLayout<\/b>, \u043d\u043e \u0438 \u0442\u043e\u0442 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <b>layout_weight<\/b>. \u0422\u0430\u043a \u0447\u0442\u043e \u0436\u0435 \u0434\u0435\u043b\u0430\u0442\u044c?<\/p>\n<h5>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u0414\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0440 \u0434\u0435\u043b\u0430\u0442\u044c \u0431\u044b\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0447\u0435\u0433\u043e \u2014 \u043b\u0438\u0431\u043e \u043c\u0443\u0447\u0430\u0439\u0441\u044f \u0441 <b>RelativeLayout<\/b>, \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0439 <b>LinearLayout <\/b>, \u043b\u0438\u0431\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0439 \u0432\u0441\u0451 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043f\u0443\u0442\u0435\u043c (\u0434\u043b\u044f \u043e\u0441\u043e\u0431\u043e \u0438\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u043d\u044b\u0445).<br \/>  \u041e\u0434\u043d\u0430\u043a\u043e \u0441 21 \u0432\u0435\u0440\u0441\u0438\u0438 <b>GridLayout <\/b> \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043d\u0430\u0447\u0430\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <b>layout_weight<\/b> \u0438, \u0447\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0432\u0430\u0436\u043d\u043e\u0435, \u044d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 <b>AppCompat <\/b>\u0432 \u0432\u0438\u0434\u0435 <b>android.support.v7.widget.GridLayout<\/b>!<br \/>  \u041a \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u043a\u043e\u0433\u0434\u0430 \u044f \u0443\u0437\u043d\u0430\u043b \u043e\u0431 \u044d\u0442\u043e\u043c (\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <b>GridLayout <\/b>\u0447\u0445\u0430\u0442\u044c \u0445\u043e\u0442\u0435\u043b \u043d\u0430 \u043c\u043e\u0439 <b>weight<\/b>), \u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043f\u043e \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u043c\u0435\u0440\u0435 \u043d\u0435\u0434\u0435\u043b\u044e, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u043e\u0439 <b>layout<\/b> \u043f\u043e\u043f\u043b\u044b\u043b \u0432\u043f\u0440\u0430\u0432\u043e (\u043a\u0430\u043a <a href=\"https:\/\/code.google.com\/p\/android\/issues\/detail?id=79177#c3\">\u0437\u0434\u0435\u0441\u044c<\/a>). \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u044d\u0442\u043e \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0435, \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u0434\u043e\u043b\u0436\u043d\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 stackoverflow (<a href=\"http:\/\/stackoverflow.com\/a\/10033481\/2653714\">1<\/a>, <a href=\"http:\/\/stackoverflow.com\/a\/10348166\/2653714\">2<\/a>) \u0443\u0436\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c.<br \/>  \u0422\u0430\u043a\u0436\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0443 \u043a \u043d\u043e\u0432\u044b\u043c <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/support\/percent\/PercentRelativeLayout.html\">PercentRelativeLayout<\/a> \u0438 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/support\/percent\/PercentFrameLayout.html\">PercentFrameLayout <\/a> \u2014 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043c\u0431\u0430. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0441\u0430\u043c\u043e \u0437\u0430 \u0441\u0435\u0431\u044f \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0440\u0430\u0439\u043d\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 \u0434\u0438\u0437\u0430\u0439\u043d. iOS&#8217;\u043d\u0438\u043a\u0438 \u043e\u0446\u0435\u043d\u044f\u0442. \u0418 \u0430\u0445 \u0434\u0430, \u043e\u043d\u043e \u0435\u0441\u0442\u044c \u0432 <a href=\"http:\/\/developer.android.com\/intl\/ru\/tools\/support-library\/features.html#percent\">AppCompat<\/a>.<\/p>\n<h4>2. <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/app\/Fragment.html#isRemoving%28%29\">Fragment.isRemoving()<\/a> \u0438 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/app\/Activity.html#isFinishing%28%29\">Acitivity.isFinishing()<\/a> \u0440\u0430\u0432\u043d\u044b?<\/h4>\n<p>  <\/p>\n<h5>\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f<\/h5>\n<p>  \u041a\u0430\u043a-\u0442\u043e \u0440\u0430\u0437 \u0437\u0430\u0445\u043e\u0442\u0435\u043b \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 <b>PresenterManager <\/b>\u0432 \u0432\u0438\u0434\u0435 \u0441\u0438\u043d\u0433\u043b\u0442\u043e\u043d\u0430 (\u043f\u0440\u0438\u0432\u0435\u0442 \u043e\u0442 <b>MVP<\/b>). \u0427\u0442\u043e\u0431\u044b \u0432\u043e\u0432\u0440\u0435\u043c\u044f \u0443\u0434\u0430\u043b\u044f\u0442\u044c <b>Presenter<\/b>&#8216;\u043e\u0432, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <b>Activity.isFinishing()<\/b>, \u0441\u043e\u0431\u0438\u0440\u0430\u044f <b>id Presenter<\/b>&#8216;\u043e\u0432 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0430\u043a\u0442\u0438\u0432\u0438\u0442\u0438 \u0438 \u0443\u0434\u0430\u043b\u044f\u044f \u0438\u0445 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/support\/design\/widget\/NavigationView.html\">NavigationView <\/a> \u2014 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/app\/FragmentTransaction.html#replace%28int,%20android.app.Fragment%29\">FragmentTransaction.replace()<\/a>, <b>Presenter<\/b>&#8216;\u044b \u043a\u043e\u043f\u0438\u043b\u0438\u0441\u044c \u0438 \u0432\u0441\u0451 \u0448\u043b\u043e \u043a\u043e\u0442\u0443 \u043f\u043e\u0434 \u0445\u0432\u043e\u0441\u0442.<br \/>  <a href=\"http:\/\/stackoverflow.com\/questions\/25450763\/what-is-the-fragment-equivalent-of-activity-isfinishing\">\u041f\u043e\u0433\u0443\u0433\u043b\u0438\u0432 \u0441\u043c\u0430\u043b\u044c\u0446\u0430<\/a>, \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d \u043c\u0435\u0442\u043e\u0434 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/app\/Fragment.html#isRemoving%28%29\">Fragment.isRemoving()<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0434\u043b\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432. \u042f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b \u043a\u043e\u0434 <b>PresenterManager<\/b>&#8216;\u0430 \u0438 \u0431\u044b\u043b \u0434\u043e\u0432\u043e\u043b\u0435\u043d. \u041a\u043e\u043d\u0435\u0446\u2026<\/p>\n<h5>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u2026 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b \u043c\u043e\u0435\u0439 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438, \u043a\u043e\u0433\u0434\u0430 \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0427\u0435\u0441\u0442\u043d\u043e, \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0438 \u0442\u0430\u043a, \u0438 \u044d\u0434\u0430\u043a, \u043d\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u043a\u043e\u0440\u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 <b>Activity.isFinishing()<\/b>. \u0413\u0443\u0433\u043b \u0431\u044b\u043b \u043d\u0435\u043f\u0440\u0430\u0432. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u0442\u0440\u0438\u0436\u0434\u044b \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <b>Fragment.isRemoving()<\/b>. <a href=\"http:\/\/stackoverflow.com\/a\/34822148\/2653714\">\u042f \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e<\/a>. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0443\u0434\u0435\u043b\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043b\u043e\u0433\u0430\u043c \u043f\u0440\u0438 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0435 \u044d\u043a\u0440\u0430\u043d\u0430.<\/p>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438 \u0441 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/app\/Activity.html#isFinishing%28%29\">Acitivity.isFinishing()<\/a> \u0442\u043e\u0436\u0435 \u043d\u0435 \u0432\u0441\u0451 \u0442\u0430\u043a \u0433\u043b\u0430\u0434\u043a\u043e: \u0441\u0432\u0435\u0440\u043d\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 &gt;1 \u0430\u043a\u0442\u0438\u0432\u0438\u0442\u0438 \u0432 \u0441\u0442\u044d\u043a\u0435, \u0434\u043e\u0436\u0434\u0438\u0442\u0435\u0441\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438, \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c <a href=\"http:\/\/developer.android.com\/intl\/ru\/training\/implementing-navigation\/ancestral.html\">Up Navigation <\/a>\u0438 *\u0432\u0443\u0430\u043b\u044f*!.. \u042d\u0442\u043e \u0431\u044b\u043b \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0435\u0446\u0435\u043f\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043e\u0438\u043c\u0435\u0442\u044c <b>Activity.isFinishing() == false<\/b> \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0438\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442\u0435.<\/p>\n<h4>3. <b>Header\/Footer <\/b>\u0432 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/support\/v7\/widget\/RecyclerView.html\">RecyclerView<\/a><\/h4>\n<p>  <\/p>\n<h5>\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f<\/h5>\n<p>  \u041e\u0431\u044b\u0447\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0%D1%86%D0%B8%D1%8F\">\u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438 <\/a> \u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c <b>ProgressBar <\/b>\u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<br \/>  \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/widget\/ListView.html\">ListView<\/a>, <b>RecyclerView <\/b>\u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u2014 \u0447\u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u0438\u0442 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/support\/v7\/widget\/RecyclerView.Adapter.html#notifyItemRangeInserted%28int,%20int%29\">RecyclerView.Adapter.notifyItemRangeInserted()<\/a> \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 <a href=\"http:\/\/stackoverflow.com\/questions\/6264795\/animate-newly-added-items-in-listview\">\u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0439 \u0431\u043e\u043b\u044c\u044e<\/a> <b>ListView<\/b>. <br \/>  \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u043c\u0435\u0441\u0442\u043e <b>ListView<\/b>, \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043d\u0430\u0442\u044b\u043a\u0430\u0435\u0448\u044c\u0441\u044f \u043d\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u044e\u0430\u043d\u0441\u043e\u0432: \u0433\u0434\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/widget\/ListView.html#setDivider%28android.graphics.drawable.Drawable%29\">ListView.setDivider()<\/a>? \u0413\u0434\u0435 \u043d\u0435\u0447\u0442\u043e \u0432\u0440\u043e\u0434\u0435 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/widget\/ListView.html#addHeaderView%28android.view.View%29\">ListView.addHeaderView()<\/a>? \u0427\u0442\u043e \u0435\u0449\u0451 \u0437\u0430 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/support\/v7\/widget\/RecyclerView.Adapter.html#getItemViewType%28int%29\">RecyclerView.Adapter.getItemViewType()<\/a> \u0438 \u0442.\u0434., \u0438 \u0442.\u043f.<br \/>  \u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0442\u043e \u0441\u043e \u0432\u0441\u0435\u0439 \u044d\u0442\u043e\u0439 \u0441\u0432\u0430\u043b\u043a\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u0435-\u0447\u0442\u043e \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f. \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 <b>Divider\/Header <\/b>\u0437\u0430\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0443\u0447\u0438 \u043a\u043e\u0434\u0430. \u0427\u0442\u043e \u0443\u0436 \u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0445 <b>layout<\/b>&#8216;\u0430\u0445? \u0414\u043e\u0432\u0435\u0447\u0430 \u0434\u043e\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c <b>RecyclerView <\/b>\u0441 4-\u043c\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 <b>Header<\/b>&#8216;\u0430\u043c\u0438 \u0438 <b>Footer<\/b>&#8216;\u043e\u043c \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0430\u043c\u0438. \u0421\u043a\u0430\u0436\u0435\u043c \u0442\u0430\u043a, \u043e\u043f\u0435\u0447\u0430\u043b\u0435\u043d\u043d\u044b\u043c \u0438 \u0443\u0434\u0440\u0443\u0447\u0435\u043d\u043d\u044b\u043c \u044f \u0445\u043e\u0434\u0438\u043b \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e.<\/p>\n<h5>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0451 \u043d\u0435 \u0442\u0430\u043a \u043f\u043b\u043e\u0445\u043e, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u0441\u043a\u0430\u0442\u044c. \u0421\u0430\u043c\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 <b>RecyclerView <\/b>(\u0438 \u043e\u043d\u043e \u0436\u0435 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e) \u2014 \u0441 \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e. \u041d\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0440\u0430\u043c\u043e\u043a. \u041e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0432\u044b\u0442\u0435\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0445\u043e\u0447\u0435\u0448\u044c <b>Header <\/b> \u2014 \u0441\u0434\u0435\u043b\u0430\u0439 \u0441\u0430\u043c. \u041d\u043e \u043a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u00ab\u0441\u0434\u0435\u043b\u0430\u0439 \u0441\u0430\u043c\u00bb \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0437\u0430 \u043d\u0430\u0441 \u0434\u0440\u0443\u0433\u0438\u0435, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<br \/>  \u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f:  <\/p>\n<ul>\n<li>\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u0435 \u00ab\u0410\u00bb \u0431\u0443\u0434\u0435\u0442 \u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u043b\u043e\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0441 \u044d\u0442\u043e\u0439 \u0431\u0443\u043a\u0432\u044b) \u2014 \u043f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 <b>item-layout<\/b>, \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f 2-\u043e\u0439 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0439 \u0442\u0438\u043f <b>ViewHolder<\/b>&#8216;\u0430. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0437\u043d\u0430\u043c\u0435\u043d\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u043e\u0434\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b \u043a \u0434\u0440\u0443\u0433\u043e\u0439 \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u043d\u044b\u0439 \u0432 <b>layout <\/b>\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0447\u0435\u0440\u0435\u0437 <b>View.VISIBLE<\/b>.<\/li>\n<li>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 <b>divider <\/b> \u2014 \u043a\u043e\u043f\u0438-\u043f\u0430\u0441\u0442 <a href=\"https:\/\/gist.github.com\/lapastillaroja\/858caf1a82791b6c1a36\">\u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/a> \u0432 \u043f\u0440\u043e\u0435\u043a\u0442. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043b\u0438\u0448\u043d\u0438\u0445 \u043c\u0430\u0445\u0438\u043d\u0430\u0446\u0438\u0439. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/support\/v7\/widget\/RecyclerView.html#addItemDecoration%28android.support.v7.widget.RecyclerView.ItemDecoration%29\">RecyclerView.addItemDecoration()<\/a><\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0442\u0435 <b>Header \/ Footer \/ Drag&#038;Drop <\/b>\u0438 \u0442.\u0434. \u2014 \u0435\u0441\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0443\u0447\u043a\u0430\u043c\u0438, \u0442\u043e \u043b\u0438\u0431\u043e \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043d\u043e\u0432\u044b\u0439 <b>ViewHolder <\/b>(\u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e), \u043b\u0438\u0431\u043e \u0434\u0435\u043b\u0430\u0442\u044c <b>WrapperAdapter <\/b>(\u043a\u0443\u0434\u0430 \u043f\u0440\u0438\u044f\u0442\u043d\u0435\u0435). \u041d\u043e \u0435\u0449\u0451 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"http:\/\/guides.codepath.com\/android\/Must-Have-Libraries#recyclerview\">\u0442\u0443\u0442<\/a> \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0432\u0448\u0443\u044e\u0441\u044f \u043b\u0438\u0431\u0443. \u041b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u043d\u0440\u0430\u0432\u044f\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0434\u0432\u0435: <a href=\"https:\/\/github.com\/mikepenz\/FastAdapter\">FastAdapter <\/a>\u0438 <a href=\"https:\/\/github.com\/cymcsg\/UltimateRecyclerView\">UltimateRecyclerView <\/a><\/li>\n<li>\u041d\u0443\u0436\u043d\u0430 <b>\u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044f<\/b>, \u043d\u043e \u043b\u0435\u043d\u044c \u0432\u043e\u0437\u0438\u0442\u044c\u0441\u044f \u0441 <b>Header \/ Footer <\/b>\u0434\u043b\u044f <b>ProgressBar<\/b>&#8216;\u043e\u0432 \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/MarkoMilos\/Paginate\">Paginate <\/a>\u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0442\u0432\u0438\u0442\u0442\u0435\u0440\u0430.<\/li>\n<\/ul>\n<p>  \u0425\u043e\u0442\u044f \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0430\u0434\u043a\u043e\u0439 \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c <b>SimpleDivider \/ SimpleHeaderAdapter <\/b>\u0438 \u0442.\u0434. \u0441\u0440\u0430\u0437\u0443 \u0432 SDK?<\/p>\n<h4>4. \u0423\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0441 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/support\/v7\/widget\/RecyclerView.Adapter.html#setHasStableIds%28boolean%29\">RecyclerView.Adapter.setHasStableIds()<\/a><\/h4>\n<p>  <\/p>\n<h5>\u0427\u0442\u043e \u0441 \u043d\u0438\u043c \u043d\u0435 \u0442\u0430\u043a?<\/h5>\n<p>  \u041d\u0435\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/support\/v7\/widget\/RecyclerView.Adapter.html#hasStableIds%28%29\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>. \u0412\u043e\u0442 \u0447\u0442\u043e \u0442\u0430\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e:  <\/p>\n<blockquote><p>Returns true if this adapter publishes a unique long value that can act as a key for the item at a given position in the data set. If that item is relocated in the data set, the ID returned for that item should be the same.<\/p><\/blockquote>\n<p>  \u0418 \u0442\u0443\u0442 \u043b\u044e\u0434\u0438 \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0430 \u0442\u0438\u043f\u0430. \u041f\u0435\u0440\u0432\u044b\u0435: \u0432\u0441\u0451 \u0436 \u044f\u0441\u043d\u043e. \u0412\u0442\u043e\u0440\u044b\u0435: \u0447\u043e \u044d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0437\u043d\u0430\u0447\u0438\u0442 \u0442\u043e?<br \/>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0442\u043d\u0435\u0441\u043b\u0438 \u0441\u0435\u0431\u044f \u043a \u043f\u0435\u0440\u0432\u044b\u043c \u043b\u044e\u0434\u044f\u043c, \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0442\u0443\u043f\u0438\u043a \u0432\u043e\u043f\u0440\u043e\u0441: \u0430 \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434? \u0414\u0430-\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 <b>ID<\/b>! \u042f \u0437\u043d\u0430\u044e. \u041d\u043e \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u043e \u043d\u0430\u0434\u043e? \u0418 \u043d\u0435\u0442, \u043e\u0442\u0432\u0435\u0442 \u00ab\u0433\u0443\u0433\u043b \u043f\u0438\u0448\u0435\u0442, \u0447\u0442\u043e \u0442\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0435\u0442!\u00bb \u043c\u0435\u043d\u044f \u043d\u0435 \u0443\u0441\u0442\u0440\u043e\u0438\u0442.<\/p>\n<h5>\u0410 \u0432\u043e\u0442 \u0432 \u0447\u0451\u043c \u0434\u0435\u043b\u043e<\/h5>\n<p>  \u0423\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043e\u0442 <b>RecyclerView.Adapter.setHasStableIds()<\/b> \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/support\/v7\/widget\/RecyclerView.Adapter.html#notifyDataSetChanged%28%29\">RecyclerView.Adapter.notifyDataSetChanged() (\u0430 \u0442\u0443\u0442 \u043e\u043d\u0438 \u0441\u043e\u0438\u0437\u0432\u043e\u043b\u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c, \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u044b stable id)<\/a>. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u043c\u0435\u0435\u0442\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0442\u043e \u0432\u0430\u043c \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043d\u0435 \u0434\u0430\u0441\u0442 \u0440\u043e\u0432\u043d\u044b\u043c \u0441\u0447\u0435\u0442\u043e\u043c \u043d\u0438\u0447\u0435\u0433\u043e, \u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442 \u0438\u0437-\u0437\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a <b>ID<\/b>. \u0423\u0437\u043d\u0430\u043b \u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0447\u0442\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432, \u0430 \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 <a href=\"https:\/\/blog.stylingandroid.com\/material-part-7\/\">\u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e<\/a>.<\/p>\n<h4>5. <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/webkit\/WebView.html\">WebView<\/a><\/h4>\n<p>  <\/p>\n<h5>\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f<\/h5>\n<p>  \u0417\u0430\u0434\u0430\u0447\u0430 \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <b>html<\/b>-\u0442\u0435\u043a\u0441\u0442 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d. \u0422\u0435\u043a\u0441\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u043e\u0442\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 <b>&quot;&#038; lt;html&#038; gt;&quot;<\/b>. \u0412\u0441\u0451. \u042d\u0442\u043e \u0432\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0421\u043b\u043e\u0436\u043d\u043e? \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0436\u0435 <b>WebView<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c <b>html <\/b>\u0432 \u043f\u0430\u0440\u0443 \u0441\u0442\u0440\u043e\u043a. \u0414\u0430 \u0447\u0442\u043e \u0442\u0430\u043c, \u0434\u0430\u0436\u0435 <a href=\"http:\/\/stackoverflow.com\/questions\/2116162\/how-to-display-html-in-textview\">TextView <\/a>\u043c\u043e\u0436\u0435\u0442 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c! \u0420\u0430\u0437-\u0434\u0432\u0430 \u0438 \u0433\u043e\u0442\u043e\u0432\u043e\u2026 \u0434\u0430?.. \u043d\u0435\u0442?.. \u043d\u0443 \u0434\u043e\u043b\u0436\u043d\u043e \u0436\u0435?!<\/p>\n<h5>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0442\u0443\u0442 \u0432\u0441\u0451 \u043d\u0435 \u0442\u0430\u043a \u0433\u043b\u0430\u0434\u043a\u043e:  <\/p>\n<ul>\n<li>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u0430 \u0442\u0438\u043f\u0430 <b>HtmlUtils.unescape() <\/b>\u0432 Android SDK. \u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0448\u044c <b>&quot;&#038; lt;&quot;<\/b> \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0432 <b>&quot;&lt;&quot;<\/b>, \u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 (\u043a\u0440\u043e\u043c\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f <b>regex<\/b>&#8216;\u0430 \u0440\u0443\u0447\u043a\u0430\u043c\u0438) \u2014 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c apache \u0441 \u0435\u0433\u043e <a href=\"http:\/\/commons.apache.org\/proper\/commons-lang\/javadocs\/api-3.1\/org\/apache\/commons\/lang3\/StringEscapeUtils.html#unescapeHtml4%28java.lang.String%29\">StringUtils.unescapeHtml4()<\/a>.<\/li>\n<li>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u043f\u0440\u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0435. \u0421\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e (\u0434\u0430, Android SDK?), <b>WebView <\/b>\u0431\u0443\u0434\u0435\u0442 \u043c\u0438\u0433\u0430\u0442\u044c \u0447\u0435\u0440\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c. \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"http:\/\/stackoverflow.com\/a\/17317706\/2653714\">\u0442\u0443\u0442 <\/a>\u0438 <a href=\"http:\/\/stackoverflow.com\/a\/16217522\/2653714\">\u0442\u0443\u0442<\/a>. \u041b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u044d\u0442\u0438\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432.<\/li>\n<li>\u0418 \u0435\u0441\u043b\u0438 \u0432\u0430\u0441 \u0435\u0449\u0451 \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u043b\u043e \u043e\u0431\u0438\u043b\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043e\u0442 \u0441\u0442\u043e\u043b\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0442\u043e \u0432\u043e\u0442 \u0434\u043e\u0431\u0438\u0432\u0430\u043b\u043e\u0447\u043a\u0430: \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c <b>ProgressBar<\/b>, \u043f\u043e\u043a\u0430 <b>html<\/b>-\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0430 \u043d\u0435 \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043b\u0430\u0441\u044c. \u0418 \u0442\u0443\u0442 \u0432\u0441\u0451 \u043f\u043b\u043e\u0445\u043e. \u0422\u043e \u0435\u0441\u0442\u044c <u>\u0440\u0435\u0430\u043b\u044c\u043d\u043e<\/u> \u043f\u043b\u043e\u0445\u043e. \u0412\u0441\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b\u0435 \u043d\u0430 <b>stackoverflow <\/b>\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437 \u0438\u043b\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432\u043e\u0432\u0441\u0435 (<a href=\"http:\/\/stackoverflow.com\/questions\/4065134\/is-there-a-listener-for-when-the-webview-displays-its-content\">\u0442\u044b\u043a<\/a>, <a href=\"http:\/\/stackoverflow.com\/questions\/21000566\/android-webview-detect-when-rendering-is-finished\">\u0442\u044b\u043a<\/a>). \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0434\u043e\u0441\u0435\u043b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u0431\u044b\u043b \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c <a href=\"http:\/\/stackoverflow.com\/a\/4945875\/2653714\">WebView.setPictureListener ()<\/a>, \u043e\u0434\u043d\u0430\u043a\u043e \u0442\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d <b>deprecated <\/b>\u0438 \u0442\u0443\u0442 \u0443\u0436\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043f\u0438\u0448\u0435\u0448\u044c.<br \/>  \u0412 \u0438\u0442\u043e\u0433\u0435, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c \u2014 \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 <b>ProgressBar<\/b>&#8216;\u0430. \u041b\u0438\u0431\u043e, \u0435\u0441\u043b\u0438 \u0443\u0436 \u0441\u043e\u0432\u0441\u0435\u043c-\u0441\u043e\u0432\u0441\u0435\u043c-\u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u0438\u0441\u043f\u0438\u0447\u0438\u0442 \u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u044f\u043c\u043e \u0432 <b>html<\/b>-\u043a\u043e\u0434, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u0447\u0435\u0440\u0435\u0437 <b>javascript <\/b>\u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. <s>\u041d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u043b\u044f \u043a\u043b\u0443\u0431\u0430 \u044d\u043b\u0438\u0442\u043d\u044b\u0445 \u043c\u0430\u0437\u0430\u0445\u0438\u0441\u0442\u043e\u0432.<\/s>  <\/li>\n<\/ul>\n<h4>6. <b>Gson<\/b>: \u0431\u0438\u0442\u043e\u0432\u0430\u044f \u043c\u0430\u0441\u043a\u0430 \u0432 \u0432\u0438\u0434\u0435 <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/java\/util\/EnumSet.html\">EnumSet<\/a><\/h4>\n<p>  <\/p>\n<h5>\u041a\u043e\u0433\u0434\u0430\/\u0413\u0434\u0435\/\u0417\u0430\u0447\u0435\u043c?<\/h5>\n<p>  (\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0430 \u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c Android&#8217;\u0430 \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f, \u043d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u0442\u0440\u0430\u0432\u043a\u0438 \u043f\u0435\u0440\u0435\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043a\u044e\u0432\u0435\u0442\u043e\u043c \u0440\u0435\u0448\u0438\u043b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c)<br \/>  \u0412 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043e\u0434\u0438\u043d \u0438\u0437 <b>api<\/b>-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0431\u0438\u0442\u043e\u0432\u0430\u044f \u043c\u0430\u0441\u043a\u0430 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u0432\u0438\u0434\u0435 <b>int<\/b>&#8216;\u0430. \u041d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u044d\u0442\u043e\u0439 \u043c\u0430\u0441\u043a\u0438.<br \/>  \u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u2014 <b>int<\/b>&#8216;\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438 \u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a. \u041d\u0435\u0441\u043e\u043c\u043d\u0435\u043d\u043d\u043e, \u043e\u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e? \u041a\u0430\u043a \u043d\u0430\u0441\u0447\u0435\u0442 <b>EnumSet<\/b>?<br \/>  \u00ab\u0411\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u00bb \u2014 \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u043f\u0440\u043e\u0433\u0433\u0435\u0440-\u0431\u043e\u0440\u043e\u0434\u0430\u0447 \u0438 \u0440\u0430\u0437\u043e\u0431\u044c\u0435\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0435\u0449\u0451 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439: <b>POJO, Model, Entity, UiModel <\/b>\u0438 \u0447\u0435\u043c \u0435\u0449\u0451 \u0447\u0451\u0440\u0442 \u043d\u0435 \u0448\u0443\u0442\u0438\u0442. \u041d\u043e \u0435\u0441\u043b\u0438 \u043b\u0435\u043d\u044c \u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0434\u043e\u043f. \u043a\u043b\u0430\u0441\u0441\u043e\u0432? \u0427\u0442\u043e \u0442\u043e\u0433\u0434\u0430?<\/p>\n<h5>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c enum, \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u0432\u0448\u0438\u0441\u044c \u043e \u00ab\u0431\u0438\u0442\u043e\u0432\u043e\u0441\u0442\u0438\u00bb \u0438\u043c\u0451\u043d \u0432 <a href=\"https:\/\/google.github.io\/gson\/apidocs\/com\/google\/gson\/annotations\/SerializedName.html\">@SerializedName<\/a>:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">enum Season<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">public enum Season {     @SerializedName(&quot;1&quot;)     AUTUMN,     @SerializedName(&quot;2&quot;)     SPRING; } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c <a href=\"https:\/\/google-gson.googlecode.com\/svn\/trunk\/gson\/docs\/javadocs\/com\/google\/gson\/JsonDeserializer.html\">JsonDeserializer <\/a>\u0434\u043b\u044f \u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0437 <b>json <\/b>\u0432 <b>EnumSet<\/b>:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">EnumMaskConverter<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">public class EnumMaskConverter&lt;E extends Enum&lt;E&gt;&gt; implements JsonDeserializer&lt;EnumSet&lt;E&gt;&gt; { \tClass&lt;E&gt; enumClass;  \tpublic EnumMaskConverter(Class&lt;E&gt; enumClass) { \t\tthis.enumClass = enumClass; \t}  \t@Override \tpublic EnumSet&lt;E&gt; deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { \t\tlong mask = json.getAsLong(); \t\tEnumSet&lt;E&gt; set = EnumSet.noneOf(enumClass);  \t\tfor (E bit : enumClass.getEnumConstants()) { \t\t\tfinal String value = EnumUtils.GetSerializedNameValue(bit); \t\t\tassert value != null;  \t\t\tlong key = Integer.valueOf(value); \t\t\tif ((mask & key) != 0) { \t\t\t\tset.add(bit); \t\t\t} \t\t} \t\treturn set; \t} } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0418 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0432 <b>Gson<\/b>:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">GsonBuilder<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.registerTypeAdapter((new TypeToken&lt;EnumSet&lt;Season&gt;&gt;() {}).getType(), new EnumMaskConverter&lt;&gt;(Season.class)); Gson gson = gsonBuilder.create(); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">class MyModel {         @SerializedName(&quot;mask&quot;) \tpublic EnumSet&lt;Season&gt; season; }  \/* ...some lines later... *\/  if (myModel.season.contains(Season.AUTUMN)) {  \t\/* do something really cool *\/  } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<h4>7. <b>Retrofit<\/b>: <b>Enum <\/b>\u0432 <a href=\"https:\/\/square.github.io\/retrofit\/2.x\/retrofit\/\">@GET<\/a> \u0437\u0430\u043f\u0440\u043e\u0441\u0435<\/h4>\n<p>  <\/p>\n<h5>\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f<\/h5>\n<p>  \u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. <b>Gson <\/b>\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435, \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u0435\u0435. <b>Retrofit <\/b>\u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">new Retrofit.Builder()<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">retrofit = new Retrofit.Builder()                 .baseUrl(ApiConstants.API_ENDPOINT)                 .client(httpClient)                 .addConverterFactory(GsonConverterFactory.create(gson))                 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                 .build(); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0410 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0442\u0430\u043a:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">enum Season<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">public enum Season {     @SerializedName(&quot;3&quot;)     AUTUMN,     @SerializedName(&quot;1&quot;)     SPRING; } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 <b>Gson <\/b>\u043a \u043f\u0440\u044f\u043c\u043e\u043c\u0443 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0443 enum \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <b>@SerializedName<\/b>, \u0441\u0442\u0430\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0441\u044f\u043a\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b-\u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438. \u0412\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u0438\u0434\u0442\u0438 \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 <b>Model<\/b>. \u0412\u0441\u0451 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Retrofit Service<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">public interface MonthApi {         @GET(&quot;index.php?page[api]=selectors&quot;)         Observable&lt;MonthSelector&gt; getPriorityMonthSelector();          @GET(&quot;index.php?page[api]=years&quot;)         Observable&lt;Month&gt; getFirstMonth(@Query(&quot;season&quot;) Season season); } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">class MonthSelector {         @SerializedName(&quot;season&quot;) \tpublic Season season; }  \/* ...some mouses later... *\/ MonthSelector selector = monthApi.getPriorityMonthSelector(); Season season = selector.season;  \/* ...some cats later... *\/ Month month = monthApi.getFirstMonth(season); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c, \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0442\u043e\u043a\u0438, \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441! \u0427\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?<\/p>\n<h5>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u042f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0443\u0441\u0442\u0438\u043b \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u043b\u043e\u0433\u0438, \u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441 <b>monthApi.getFirstMonth(season)<\/b> \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d, \u043a\u0430\u043a <b>index.php?page[api]=years&#038;season_lookup=AUTUMN<\/b>\u2026 \u00ab\u044d\u044d\u044d\u044d, \u0447\u0442\u043e \u0437\u0430 \u0434\u0435\u043b\u0430?\u00bb \u2014 \u0441\u043a\u0430\u0436\u0443 \u044f. \u0410 \u043a\u0430\u043a\u043e\u0432 \u0432\u0430\u0448 \u043e\u0442\u0432\u0435\u0442? \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442? \u0415\u0449\u0451 \u043d\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c? \u0422\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u043e\u043f\u0430\u043b\u0438. <br \/>  \u041a\u043e\u0433\u0434\u0430 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439, \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u043e\u0432 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043e\u0434\u043d\u0443 \u0432\u0435\u0449\u044c (\u0438\u043b\u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0434\u0430\u0436\u0435 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c): \u0434\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <b>Gson <\/b>\u043f\u0440\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 <b>@GET<\/b> \/ <b>@POST<\/b> \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 _\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432_ \u0432\u043e\u043e\u0431\u0449\u0435! \u0412\u0435\u0434\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437 \u0432\u0438\u0434\u0435\u043b\u0438 \u043d\u0435\u0447\u0442\u043e \u0432\u0440\u043e\u0434\u0435 <b>index.php?page[api]=years&#038;season_lookup={a:123; b:321}<\/b>? \u042d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430. <b>Retrofit 2<\/b> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <b>Gson <\/b>\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438 <b>Body<\/b>, \u043d\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0434\u043b\u044f \u0441\u0430\u043c\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0412 \u0438\u0442\u043e\u0433\u0435? \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e <b>season.toString()<\/b> \u2014 \u043e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<br \/>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0443\u0436 \u043e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f <s>(\u0430 \u044f \u0438\u0437 \u0442\u0430\u043a\u0438\u0445)<\/s> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <b>enum <\/b>\u0441 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 <b>Gson <\/b>\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435, \u0442\u043e \u0432\u0430\u043c <a href=\"http:\/\/stackoverflow.com\/a\/35801262\/2653714\">\u0441\u044e\u0434\u0430<\/a> \u2014 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u043e\u0440, \u0432\u0441\u0451 \u043a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430. <\/p>\n<h4>8. <b>Retrofit<\/b>: \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 <b>auth-token<\/b><\/h4>\n<p>  \u0418 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a, \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0432\u0435\u0449\u044c \u0442\u0435\u043c, \u043a\u0442\u043e \u043f\u0438\u0448\u0435\u0442 \u0442\u0430\u043a:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041b\u044e\u0431\u043e\u0439 Retrofit Service<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">public interface CoolApi {     @GET(&quot;index.php?page[api]=need&quot;)     Observable&lt;Data&gt;      just(@Header(&quot;auth-token&quot;) String authToken);     \/\/           ^\u0448\u043b\u0451\u043c auth-token      @GET(&quot;index.php?page[api]=more&quot;)     Observable&lt;Data&gt;      not(@Header(&quot;auth-token&quot;) String authToken);     \/\/           ^\u0448\u043b\u0451\u043c auth-token \u0435\u0449\u0451 \u0440\u0430\u0437      @GET(&quot;index.php?page[api]=gold&quot;)     Observable&lt;Data&gt;      doIt(@Header(&quot;auth-token&quot;) String authToken);     \/\/           ^\u0448\u043b\u0451\u043c auth-token \u0432 101\u044b\u0439 \u0440\u0430\u0437! } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/square\/okhttp\/wiki\/Interceptors\">Interceptor<\/a>&#8216;\u043e\u0440\u044b! \u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e <b>Retrofit <\/b>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 3 \u0447\u0430\u0441\u0430 \u0441\u0438\u0434\u0438\u0448\u044c \u0438 \u0432\u044b\u0447\u0438\u0449\u0430\u0435\u0448\u044c \u043a\u043e\u0434 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 <b>auth-token<\/b>, \u043d\u043e \u0438 \u043e\u0442\u043e \u0432\u0441\u044f\u043a\u0438\u0445 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 <i>current_location, battery_level, busy_status <\/i> \u2014 \u043d\u0430\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u0432\u0435\u043b\u0438\u043a\u0430\u044f \u043f\u0435\u0447\u0430\u043b\u044c\u043a\u0430 (\u043d\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0439\u0442\u0435, \u0437\u0430\u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c <i>battery_level <\/i>\u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441. \u0421\u0430\u043c \u0432 \u0448\u043e\u043a\u0435). \u041f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/futurestud.io\/blog\/retrofit-token-authentication-on-android\">\u0442\u0443\u0442<\/a>.<\/p>\n<h4>\u0412\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/h4>\n<p>  \u0427\u0442\u043e \u0436, \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0432\u044b\u0448\u043b\u043e \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0435\u043a\u0441\u0442\u0430, \u0447\u0435\u043c \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0435\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043a\u044e\u0432\u0435\u0442\u044b \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c, \u0434\u0440\u0443\u0433\u0438\u0435 \u0436\u0435 \u044f \u0440\u0435\u0448\u0438\u043b \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0430.<br \/>  \u0412\u043e\u043f\u0440\u0435\u043a\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/279811\/\">\u043f\u043e\u0441\u044b\u043b\u0443 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438<\/a>, \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u044f \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0441 \u043d\u0435 \u00ab\u0433\u0443\u0433\u043b\u0438\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u00bb, \u0430 \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u00ab\u0430 \u0437\u0430\u0447\u0435\u043c \u044f \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e?\u00bb. \u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u0435 SDK \u0438\u043b\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u0430 \u0441\u0430\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0438, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0451 \u043a\u0443\u0434\u0430 \u043f\u043b\u0430\u0447\u0435\u0432\u043d\u0435\u0435. \u041d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0435\u0434\u043e\u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u043a\u0430\u043a \u0438 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e.<br \/>  \u0412 \u043e\u0431\u0449\u0435\u043c, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0430\u043d\u0434\u0440\u043e\u0438\u0434 \u0438\/\u0438\u043b\u0438 \u0432\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u0438\u043c \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u2014 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u0435\u0440\u0436\u0438\u0442\u0435 \u0441\u0435\u0431\u044f \u0432 \u043a\u0443\u0440\u0441\u0435 <a href=\"http:\/\/android-developers.blogspot.ru\/\">\u043c\u0438\u0440\u043e\u0432\u044b\u0445 \u0442\u0440\u0435\u043d\u0434\u043e\u0432<\/a>. \u041d\u0443 \u0438\u043b\u0438 \u043f\u043e\u0438\u0449\u0438\u0442\u0435 <a href=\"http:\/\/guides.codepath.com\/android\/Keeping-Updated-with-Android\">\u0437\u0434\u0435\u0441\u044c <\/a> \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u043d\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441. \u0422\u0430\u043c \u0436\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 <a href=\"http:\/\/guides.codepath.com\/android\">Android SDK<\/a>, <a href=\"http:\/\/guides.codepath.com\/android\/Must-Have-Libraries\">\u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445<\/a> \u0438 \u0442.\u0434., \u0438 \u0442.\u043f.               <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/280190\/\"> https:\/\/habrahabr.ru\/post\/280190\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043f\u043e\u0434 Android, \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u0447\u0435\u043a\u0443. \u0428\u0430\u0433 \u0432\u043b\u0435\u0432\u043e \/ \u0448\u0430\u0433 \u0432\u043f\u0440\u0430\u0432\u043e \u2014 \u0438 \u0432\u043e\u0442 \u043f\u0440\u043e\u0448\u0435\u043b \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0447\u0430\u0441 \u0437\u0430 \u0434\u0435\u0431\u0430\u0433\u043e\u043c. \u041a\u044e\u0432\u0435\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0443\u0433\u043e\u0434\u043d\u043e: \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0431\u0430\u0433\u043e\u0432 \u0432 SDK \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c (\u0434\u0430-\u0434\u0430, <a href=\"http:\/\/developer.android.com\/intl\/ru\/reference\/android\/app\/Fragment.html#getFragmentManager%28%29\">Fragment.getFragmentManager()<\/a>, \u044d\u0442\u043e \u044f \u043e \u0442\u0435\u0431\u0435).<\/p>\n<p>  \u0412 <a href=\"https:\/\/habrahabr.ru\/post\/279811\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u0431\u044b\u043b\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043a\u044e\u0432\u0435\u0442\u044b \u00ab\u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438\u00bb SDK, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0433\u043e\u0434\u0438\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0436\u0435 \u0440\u0430\u0437 \u043a\u044e\u0432\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0433\u043b\u0443\u0431\u0436\u0435, \u043f\u043e\u043c\u0443\u0434\u0440\u0451\u043d\u0435\u0435 \u0438 \u043f\u043e\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0435\u0435. \u0422\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 <a href=\"http:\/\/inthecheesefactory.com\/blog\/retrofit-2.0\/en\">Retrofit 2<\/a> &#038; <a href=\"https:\/\/github.com\/google\/gson\">Gson<\/a>. <br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/907\/5f9\/f9f\/9075f9f9fefe6985f639b6ae3b6230c7.jpg\" alt=\"image\"\/>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-277954","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/277954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=277954"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/277954\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=277954"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=277954"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=277954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}