AsyncTask рдХреНрд▓рд╛рд╕ рдХреА рд╕реБрд╡рд┐рдзрд╛

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо AsyncTask рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд╣рдбрд╝рддрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд╡рд╛рдВрдЫрдиреАрдп рдкрд░рд┐рдгрд╛рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЗрдП рдЬрд╛рдиреЗ ...


cancel() рд╡рд┐рдзрд┐ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЦрд╝рд╛рд╕рд┐рдпрдд рдирд┐рд╣рд┐рдд рд╣реИред
рдпрджрд┐ рдЖрдк рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ boolean рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддреА рд╣реИ рдФрд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╕рдВрднрд╡ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╡рд┐рдзрд┐ false рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреА рд╣реИред cancel() рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ "рд╡рд┐рдлрд▓" рдХреЙрд▓ рдХреЗ рдмрд╛рдж, isCancelled() рд╡рд┐рдзрд┐ рднреА false рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред
рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рд╣реИ, рддреЛ рдХрдо рд╕реЗ рдХрдо рдпрд╣ рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред

 private class Task extends AsyncTask<Object, Object, Object> { ... protected void onPostExecute(Object result) { if (!isCancelled()) { //do something interesting } } ... } 


рдХрд╛рд░рдгреЛрдВ


рдорд╛рди рд▓реЗрдВ рдХрд┐ AsyncTask рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, doInBackground() рд╡рд┐рдзрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рдФрд░ рдореБрдЦреНрдп рдЗрд╡реЗрдВрдЯ рдХрддрд╛рд░ рдореЗрдВ onPostExecute() рд╡рд┐рдзрд┐ рдХреЙрд▓ "рдкреЛрд╕реНрдЯ" рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рднреА рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЗрд╕ рдХреНрд╖рдг рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк AsyncTask рдХреЛ cancel() рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, onPostExecute() рд╡рд┐рдзрд┐ рдХреЛ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди AsyncTask рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░рджреНрдж рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ - cancel() рд╡рд┐рдзрд┐ false рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред рдФрд░, рдЗрд╕рд▓рд┐рдП, isCancelled() рд╡рд┐рдзрд┐ рднреА рдмрд╛рдж рдХреА рдХреЙрд▓ рдкрд░ false рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рддрдХ cancel() рд╡рд┐рдзрд┐ рдХреЛ doInBackground() рдХрд┐рдпрд╛ doInBackground() рддрдм рд╕реЗ AsyncTask рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЧрдИ рдереА doInBackground() рдХреНрдпреЛрдВрдХрд┐ doInBackground() рд╡рд┐рдзрд┐ рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рдерд╛) рдФрд░ AsyncTask "рд╕реЛрдЪрддрд╛ рд╣реИ" рдХрд┐ рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЗрдЯ рдкреВрд░рд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдордиреЗ AsyncTask рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╣рдо рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдПред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЬрд╛рдВрдЪ !isCancelled() , рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдХрд░реЗрдВ?


рдпрджрд┐ AsyncTask рдХрд╛ рд╡рд░реНрдгрди рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ AsyncTask рдХреЛ рдХреЗрд╡рд▓ рддрднреА рд░рджреНрдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЖрдк рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк isFinishing рдкрджреНрдзрддрд┐ рдХрд╛ рд░рд┐рдЯрд░реНрди рдорд╛рди рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдзрд┐ рдмрд╣реБрдд рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдирд╣реАрдВ рд╣реИред
рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдЦреБрдж рдХреА рдХрдХреНрд╖рд╛ рд▓рд┐рдЦреЗрдВ (рдХрд╣рддреЗ рд╣реИрдВ, AbsAsyncTask) рдФрд░ cancel() рдФрд░ isCancelled() рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдЕрдВрддрд┐рдо рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдЖрд╡рд░рдг рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдЬреЛ рд╕рднреА рдХреЙрд▓реЛрдВ рдХреЛ AsyncTask рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рдФрд░ рдЬрдм cancel() рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдзреНрд╡рдЬ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ AsyncTask рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ cancel() рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВред

Source: https://habr.com/ru/post/In116309/


All Articles