
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рднрд╛рд░реА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рдЙрдирдХреА рдкреНрд░рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ AsyncTask рдФрд░ ProgressDialog рдХрд╛ рдЙрдкрдпреЛрдЧред
рдпрд╣ рдпреБрдЧрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЗрд╕ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдорд╛рддреНрд░рд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЕрд╕рд╣рдиреАрдп рджрд░реНрдж рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдирд┐рдпрдВрддреНрд░рдг рдХреЛрдб рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рджрд░реНрдж рдЬрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рд╕реНрдХреНрд░реАрди рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
AsyncTask
рдЬреЛ рд▓реЛрдЧ AsyncTask рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рд╛рд░ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
- onPreExecute рдХреЛ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛрдб (UI рдереНрд░реЗрдб) рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
- doInBackground рднрд╛рд░реА рдХреЛрдб рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
- рдкреНрд░рдЧрддрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ (UI рдереНрд░реЗрдб) рдХреЗ рд▓рд┐рдП onProgressUpdate
- doInBackground (UI рдереНрд░реЗрдб) рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП onPostExecute
рдФрд░ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпрд╛рдБ
- рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдХреЛрдИ рдХрд╛рд░реНрдп рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ
- рдкрдмреНрд▓рд┐рд╢рдкреНрд░реЛрдкрд░реЗрд╢рди рдкреНрд░рдЧрддрд┐ рдХреЗ рд╕рдВрджреЗрд╢ рдХреЛ рдПрдХ рдпреВрдЖрдИ рдереНрд░реЗрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдмрд╛рдж рдСрдирд░реНрд░реЛрдЧрдЕрдк рдпреВрдбреЗрдЯ рдХреЙрд▓
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░
рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдХреБрдЫ рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░реЛрдЧреНрд░реЗрд╕рдбрд╛рдпрд▓реЙрдЧ рдХрд╛рд░реНрдп рдХреА рдкреНрд░рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╢реИрддрд╛рди рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╕ рд╕реНрдХреНрд░реАрди рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд╡рд╛рдж рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рд▓рдВрдмреЗ, рд▓реЗрдХрд┐рди рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред
рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдЧрддрд┐рд╡рд┐рдзрд┐ рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реИ: рд╕реНрдХреНрд░реАрди рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдмрджрд▓рдирд╛ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕ рддрдВрддреНрд░ рдХреЛ
android:configChanges="orientation"
рд╕реЗрдЯ рдХрд░рдХреЗ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
android:configChanges="orientation"
рдЯреИрдЧ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЛрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдХрд┐ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрд╡рд╢реНрдпрдХ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрдиреБрдЪрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдЧрд╛ред
рд╕рдорд╛рдзрд╛рди рдЧрддрд┐рд╡рд┐рдзрд┐-AsyncTask-ProgressDialog рдмрдВрдбрд▓ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЪрд▓реЛ рдЗрд╕реЗ AsyncTaskManager рдХрд╣рддреЗ рд╣реИрдВред
рдЧрддрд┐рд╡рд┐рдзрд┐
рдЗрд╕рд▓рд┐рдП, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╣рдорд╛рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдХреЗрд╡рд▓ рдкрд╛рдВрдЪ рдЪреАрдЬреЗрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдХреЛрдб):
- OnCreate рдореЗрдердб рдореЗрдВ AsyncTaskManager рдмрдирд╛рдПрдВ
mAsyncTaskManager = new AsyncTaskManager(this, this);
- рд░рд╛рдЬреНрдп рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ AsyncTaskManager рдХрд╛рд░реНрдп рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐
mAsyncTaskManager.handleRetainedTask(getLastNonConfigurationInstance());
- рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ AsyncTaskManager рдХреЛ рджреЗрдВ
mAsyncTaskManager.setupTask(new Task(getResources()));
- рд░рд╛рдЬреНрдп рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП AsyncTaskManager рдХреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмрдирд╛рдПрдВ
return mAsyncTaskManager.retainTask();
- рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд░рдирд╛
рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдФрд░ AsyncTaskManager рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
public interface OnTaskCompleteListener { void onTaskComplete(Task task); }
рд╡рд┐рдзрд┐ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ, рдЬрд┐рд╕ рдХрд╛рд░реНрдп рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреВрд░рд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ, рдЙрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
AsyncTaskManager
AsyncTaskManager рдХреЛ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЙрдмрд▓рддреЗ рд╣реИрдВ:
- рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╕рдВрд╡рд╛рдж рдмрдирд╛рдПрдБ
- рдЬрдм рдкреНрд░рдмрдВрдзрди рдореЗрдВ рдХреЛрдИ рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЪрд▓рд╛рдПрдВ
- рд╕рдВрд╡рд╛рдж рдореЗрдВ рдХрд╛рд░реНрдп рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ
- рдЗрд╕реЗ рд░рд╛рдЬреНрдп рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж рдХрд╛рд░реНрдп рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдкреБрди: рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
- рд╕рдВрд╡рд╛рдж рд░рджреНрдж рдХрд░рддреЗ рд╕рдордп рдХрд╛рд░реНрдп рд░рджреНрдж рдХрд░реЗрдВ
- рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рд╕рдВрд╡рд╛рдж рдмрдВрдж рдХрд░реЗрдВ
- рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛрдиреЗ рдпрд╛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ
рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬрд┐рд╕реЗ рдХрд╛рд░реНрдп рдкрд░ рд▓рд╛рдЧреВ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
public interface IProgressTracker { void onProgress(String message); void onComplete(); }
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
@Override public void onProgress(String message) { if (!mProgressDialog.isShowing()) { mProgressDialog.show(); } mProgressDialog.setMessage(message); } @Override public void onComplete() { mProgressDialog.dismiss(); mAsyncTask.setProgressTracker(null); mTaskCompleteListener.onTaskComplete(mAsyncTask); mAsyncTask = null; }
рдХрд╛рд░реНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛:
mAsyncTask.setProgressTracker(this);
рдХрд╛рд░реНрдп рд╕реЗ рдЕрд▓рдЧ рдХрд░реЗрдВ:
mAsyncTask.setProgressTracker(null); mAsyncTask = null;
рд╕рдВрд╡рд╛рдж рд░рджреНрдж рдХрд░реЗрдВ:
@Override public void onCancel(DialogInterface dialog) { mAsyncTask.setProgressTracker(null); mAsyncTask.cancel(true); mTaskCompleteListener.onTaskComplete(mAsyncTask); mAsyncTask = null; }
AsyncTaskManager рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рдВрднрд╡рддрдГ рдХрд╛рд░реНрдп рдХреЛ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдкреБрдирдГ рдирд┐рд░реНрдорд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╣ рдкреНрд░реЛрдЧреНрд░реЗрд╕рдбрд╛рдпрд▓реЙрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдЫреБрдкрд╛рддрд╛ рд╣реИред
AsyncTask
рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЗрд╕реЗ AsyncTaskManager рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрдЯ / рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреА:
public void setProgressTracker(IProgressTracker progressTracker) { mProgressTracker = progressTracker; if (mProgressTracker != null) { mProgressTracker.onProgress(mProgressMessage); if (mResult != null) { mProgressTracker.onComplete(); } } }
рдЬреИрд╕рд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрд╛рд░реНрдп рдЧрдгрдирд╛ рдкрд░рд┐рдгрд╛рдо рдФрд░ рдЕрдВрддрд┐рдо рдкреНрд░рдЧрддрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рд╣реИ, рдФрд░, рд░рд╛рдЬреНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдЯреНрд░реИрдХрд░ рд╡рд┐рдзрд┐ (AsyncTaskManager) рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рднрд▓реЗ рд╣реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдП, рдпрд╣ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдо
рдЕрдм рдЖрдк рдирд┐рдбрд░ рд╣реЛрдХрд░ рдлреЛрди рдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдШреБрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ - рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдРрд╕реЗ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╣рд╛рд▓рд┐рдпрд╛ рдЖрд╡реЗрджрди рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред
рд╕рдВрджрд░реНрдн
рдбреНрд░рд╛рдлреНрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкреБрд░рд╛рд▓реЗрдЦAsyncTask (рдПрди) рдХрд╛ рд╡рд┐рд╡рд░рдгрдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдХрд╛рд░реНрдп (рдПрди)Android рдореЗрдВ рд╕рдВрд╡рд╛рдж (en)