рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдВрдбреНрд░реЙрдЗрдб рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ рдбреЗрд╡рд▓рдкрд░ рдЬрд╛рдирддрд╛ рд╣реИ, рдпрд╣ рд╕рдорд╛рдирд╛рдВрддрд░ рдзрд╛рдЧреЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреЛрдб рдХреЛрдб рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, UI рдереНрд░реЗрдб рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдереНрд░реЗрдб рдХреЗ рдмреАрдЪред рдЗрд╕ рд▓рдШреБ рдирд┐рдмрдВрдз рдореЗрдВ рдореИрдВ рдмрд┐рд▓реНрдЯ-рдЗрди ResultReceiver рд╡рд░реНрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдЬреНрд╡рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп
рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ, рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рддред рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░реЗрдВред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛ рдХрд┐ рдпреВрдЖрдИ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдмреБрд░рд╛ рдХреНрдпреЛрдВ рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдкреАрдЖрдИ 11 (рд╣рдиреАрдХреЙрдореНрдм рдЬреЛ) рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рд╕рд┐рд╕реНрдЯрдо рдбреЗрд╡рд▓рдкрд░ рд╣рд╛рдереЛрдВ рдХреЛ рдзрдбрд╝рдХрддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рдпреВрдЖрдИ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред
рдпреВрдЖрдИ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕реНрдЯреНрд░реАрдо (рдЬрд┐рд╕рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдХреНрд▓рд╛рд╕
android.os.ResultReceiver
рд╕рд╛рде рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛
рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ IntentService рдХреЛ рдЪреБрдирд╛ред рд╡рд╣ рдХреНрдпреЛрдВ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реЗрд╡рд╛ рдирд╣реАрдВ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ IntentService, рдЬрдм рдХреЛрдИ рдХрдорд╛рдВрдб рдЗрд╕ рдкрд░ рдЖрддрд╛ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ UI рд╕реЗ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ
onHandleIntent(Intent intent)
рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рд╕рд░рд▓ рд╕реЗрд╡рд╛ рдЗрд╕реЗ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕реЗрд╡рд╛ рд╕реЗ рдПрдХ рдзрд╛рд░рд╛ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЧрддрд┐рд╡рд┐рдзрд┐ рдФрд░ рдЗрд░рд╛рджреЗ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдЗрдВрдЯреЗрдВрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХреЛрдб
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрд░реЛрдд рдХреЛрдб, рдлрд┐рд░ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреИрд╕реЗ рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдиреАрдЪреЗред
рдкрд░рд┐рдгрд╛рдореА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
public class AppResultsReceiver extends ResultReceiver { public interface Receiver { public void onReceiveResult(int resultCode, Bundle data); } private Receiver mReceiver; public AppResultsReceiver(Handler handler) { super(handler); } public void setReceiver(Receiver receiver) { mReceiver = receiver; } @Override protected void onReceiveResult(int resultCode, Bundle resultData) { if (mReceiver != null) { mReceiver.onReceiveResult(resultCode, resultData); } } }
рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдХреЙрд▓рдмреИрдХ (
Receiver
) рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
onReceiveResult()
рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░, рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдХреНрд░рд┐рдпрдг рдХреЛрдб рдореЗрдВ рдЖрдЧреЗ рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЗрд╕ рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдХреИрд╕реЗ рд╕рдХреНрд░рд┐рдп рдФрд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдирд╛ рд╣реИред
IntentService
public class AppService extends IntentService { public AppService() { this("AppService"); } public AppService(String name) { super(name); } @Override protected void onHandleIntent(Intent intent) { final ResultReceiver receiver = intent.getParcelableExtra(Constants.RECEIVER); receiver.send(Constants.STATUS_RUNNING, Bundle.EMPTY); final Bundle data = new Bundle(); try { Thread.sleep(Constants.SERVICE_DELAY); data.putString(Constants.RECEIVER_DATA, "Sample result data"); } catch (InterruptedException e) { data.putString(Constants.RECEIVER_DATA, "Error"); } receiver.send(Constants.STATUS_FINISHED, data); } }
onHandleIntent()
рдХреЛ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб (UI рдХреНрд▓рд╛рд╕реЗрд╕ рдЖрджрд┐)
startService()
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред ResultReceiver рдЙрджрд╛рд╣рд░рдг рдЗрд░рд╛рджреЗ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрдорд╛рдВрдб "рдареАрдХ рд╣реИ, рдореИрдВ рдХрд╛рдо рдкрд░ рдЧрдпрд╛" рдЙрд╕реЗ рддреБрд░рдВрдд рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдгрд╛рдо (рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдПрдВ, рддрд╛рд░, JSON рд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдХреБрдЫ рднреА) рдмрдВрдбрд▓ рдореЗрдВ рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ (рд╕реНрдерд┐рд░рд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреИрд╕реЗ ResultReceiver рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИ рдЗрд╕рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реЗрд╡рд╛ рдореЗрдВ рдХрдорд╛рдВрдб рднреЗрдЬрдирд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ (рдЧрддрд┐рд╡рд┐рдзрд┐)
public class MainActivity extends Activity implements AppResultsReceiver.Receiver { private AppResultsReceiver mReceiver; private ProgressBar mProgress; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mProgress = (ProgressBar) findViewById(R.id.progressBar); } @Override protected void onResume() { super.onResume(); mReceiver = new AppResultsReceiver(new Handler()); mReceiver.setReceiver(this); } @Override protected void onPause() { super.onPause(); mReceiver.setReceiver(null); } public void onStartButtonClick(View anchor) { final Intent intent = new Intent("SOME_COMMAND_ACTION", null, this, AppService.class); intent.putExtra(Constants.RECEIVER, mReceiver); startService(intent); } @Override public void onReceiveResult(int resultCode, Bundle data) { switch (resultCode) { case Constants.STATUS_RUNNING : mProgress.setVisibility(View.VISIBLE); break; case Constants.STATUS_FINISHED : mProgress.setVisibility(View.INVISIBLE); Toast.makeText(this, "Service finished with data: " + data.getString(Constants.RECEIVER_DATA), Toast.LENGTH_SHORT).show(); break; } } }
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдЧрддрд┐рд╡рд┐рдзрд┐
AppResultsReceiver.Receiver
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ
AppResultsReceiver.Receiver
рд╣реИред рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рд░рд┐рд╕реАрд╡рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ, рдЬрдм рд░реЛрдХрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реЗрд╡рд╛ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕реБрдирдиреЗ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдПрдХ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдХрдорд╛рдВрдб (рдЖрд╢рдп) рдмрдирддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ
ResultReceiver
рдХрд╛ рд▓рд┐рдВрдХ рдЗрд╕рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред
рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб
onReceiveResult()
рд╡рд┐рдзрд┐ рдореЗрдВ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЗрд╕реА рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рд╕рдм рд╣реИред
рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░рд▓ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрдЯрди рд╣реИ "рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ"ред


рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ
рдХрд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб
GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗрд╡рд╛ рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдПрдХ рдЕрдкрдорд╛рди рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдзрд╛рд░рд╛ рдмрд╕ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рд░реЛрдХ рджреА рдЬрд╛рддреА рд╣реИред рдмреЗрд╢рдХ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб (рдХрд╛рд░реНрд░рд╡рд╛рдИ) рдХреЗ рдХреЛрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░, рдЖрджрд┐ред рдЖрдкрдХреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдУ.рдУ.рдкреА. рдпрд╣ рднреА рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЙрдбрд▓) рдЬреЛ рдмрдВрдбрд▓ рдореЗрдВ рдкреИрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдкрд╛рд░реНрд╕рд▓реЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд╕реЗ рдЙрдирдХреА рдХреНрд░рдорд┐рдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред
рдмреЗрд╢рдХ, рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдВрддрд┐рдо рд╕рддреНрдп рдирд╣реАрдВ рд╣реИред рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдкрддреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг, рд╕рд╛рдзрди рдФрд░ рд╕рдВрдпреЛрдЬрди рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред рдЪрд╛рд╣реЗ рд╡рд╣ AsyncTask, рд╕реЗрд╡рд╛ + рдереНрд░реЗрдб + рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд╕реАрд╡рд░ рд╣реЛ, рдпрд╛ рдпреВрдЖрдИ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢ рдХрд╛ "рдореИрдиреБрдЕрд▓" рдкреНрд░рд╕рд╛рд░рдг рд╣реЛред рдЪреБрдиреЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдЖрдкред рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИред