AsyncTask рд╕реЗ рдбреЗрдЯрд╛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

рдореИрдВ рд╢реБрд░реБрдЖрддреА рдПрдВрдбреНрд░реЙрдЗрдб рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реА рдЪрд╛рд▓ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдЯреНрд░рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА рддрд░рд╣ рдкреБрд░рд╛рдиреА рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рднреА рдХрдИ рдмрд╛рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдореБрдЦреНрдп рдХрд╛рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдкрд┐рдЫрд▓реЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рднреВрд▓ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЕрдм рджреВрд╕рд░реЗ рджрд┐рди рдореБрдЭреЗ рдЗрд╕реЗ рддреБрд░рдВрдд рдпрд╛рдж рд░рдЦрдирд╛ рдерд╛ред


рдореБрдЭреЗ рдПрдХ рдорд╛рдЗрдХреНрд░реЛ-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдп рдЕрдкрдорд╛рди рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реИ: рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рд▓реЗрдХрд┐рди рдПрдХ "рд▓реЗрдХрд┐рди" рд╣реИ, рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ "рдмрдЯ" рднреА рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рднреА рдСрдкрд░реЗрд╢рди, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдЗрд╕рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рднреА рдСрдкрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ), рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Android SDK рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрдо рд╕реЗ рдХрдо рджреЛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ (рдФрд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд╣реА) AsyncTask рд╣реИ ред рддреЛ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЖрдЧреЗ рдмрдврд╝реЛред

рджреВрд╕рд░реА рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╣рдорд╛рд░реА рдореБрдЦреНрдп рдзрд╛рд░рд╛ рдореЗрдВ рдХреИрд╕реЗ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдП? рдареАрдХ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ ... рд╣рдо AsyncTask рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдФрд░ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреА onPostExecute рд╡рд┐рдзрд┐ рдХреЛ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ! рдпрд╣ рддрдереНрдп рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрдо рд╕реЗ рдХрдо рджреЛ рд╕рдорд╛рдзрд╛рди рджреЗрддрд╛ рд╣реИред рд╕рдордп рдХреА рд╕рдВрдЦреНрдпрд╛ - рд╣рдо рдмрд╕ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде AsyncTask рдкрд░ рдЕрдкрдиреЗ рдЧреНрд░рд╛рдлрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ ListView рд╣реИ) рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдСрдирдкреЛрд╕реНрдЯрдПрдХреНрд╕реНрдпреВрдЯ рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рднрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЕрдХреНрд╕рд░ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдирдВрдмрд░ рджреЛ - рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛ рд╣рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рджреЗрддрд╛ рд╣реИ - рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИред рдпрд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХрдИ рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣ рд╢рдмреНрджреЛрдВ рд╕реЗ рдХрд░реНрдореЛрдВ рдХреА рдУрд░ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ!

рдЗрд╕рд▓рд┐рдП, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╡рд┐рдзрд┐ рд╣реЛрдЧреА:
public interface GetDataListener { void onGetDataComplete(JSONArray result); } 


рдЕрдм рд╣рдо рдЕрдкрдиреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
 public class MyActivity extends Activity implements GetDataListener { private ListView list; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); list = (ListView) findViewById(R.id.lvData); } public void onGetDataComplete(JSONArray responce) { ... //    ListView ... } } 


рдЦреИрд░, рдЕрдм рдпрд╣ AsyncTask рдХрд╛ рд╕рдордп рд╣реИ:
 public class GetData extends AsyncTask<Void, Void, JSONArray> { private final static String SERVICE_URI = "http://moi.service.com/service.php"; private GetDataListener listener; GetData(GetDataListener listener) { this.listener = listener; } protected void onPostExecute(JSONArray result) { listener.onGetDataComplete(result); } protected JSONArray doInBackground(Void... params) { return CallService(); } private JSONArray CallService() { JSONArray records = null; ... //      ... return records; } } 

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ! рдпрд╣рд╛рдВ рд╣рдо рдЕрдкрдирд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВред

рдЕрдм рд╕рдм рдХреБрдЫ рд▓рдЧрднрдЧ рддреИрдпрд╛рд░ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рд╣рдорд╛рд░реЗ рддрдВрддреНрд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ:

 new GetData(this).execute(); 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрд░рд╛рдВрддрд┐рдХрд╛рд░реА, рд╕реНрд╡рдЪреНрдЫ рдФрд░ рд╕рд░рд▓ рдХреБрдЫ рднреА рдирд╣реАрдВред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрд┐рд╕реА рдХрд╛ рд╕рдордп рдмрдЪрд╛рдпрд╛ред

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


All Articles