рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рдЙрд╕реА рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдЬ рдбрд╛рдЙрдирд▓реЛрдб / рдкрдврд╝рдиреЗ / рдмрдЪрд╛рдиреЗ / рдЧрд┐рдирдиреЗ рдХреЗ рдХрдИ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрдмрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд╛рд░рд╛рдЬрд╝ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдгрдп рдХрдм рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд╣рдо рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЪреАрдЬреЗрдВ, рдЬреИрд╕реЗ рдереНрд░реЗрдб рдХреНрд▓рд╛рд╕ рдФрд░ java.util.concurrent рдкреИрдХреЗрдЬ, рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИрдВред
рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореВрд▓ рдмрд╛рддреЗрдВ рдмрддрд╛рдП рдмрд┐рдирд╛ рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП ...
рдзрд╛рдЧрд╛
рдереНрд░реЗрдб рдХреНрд▓рд╛рд╕, рдЬреЛ рдЬрд╛рд╡рд╛ рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреАрдЖрдИ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╢рд╛рдпрдж рдПрдХ рдирдпрд╛ рдзрд╛рдЧрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЖрдк рдереНрд░реЗрдб рд╕реЗ рдПрдХ рд╡рд╛рд░рд┐рд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд░рдирдиреЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдереНрд░реЗрдб рдХреНрд▓рд╛рд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг 1. рд╡рд┐рд╕реНрддрд╛рд░ рдзрд╛рдЧрд╛редclass WorkingThread extends Thread{ @Override public void run() {
рдЙрджрд╛рд╣рд░рдг 2. рдЪрд▓рдиреЗ рдпреЛрдЧреНрдпред class WorkingClass implements Runnable{ @Override public void run() {
рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдХреЗрд╡рд▓ рдпреВрдЖрдИ рддрддреНрд╡реЛрдВ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рд╕реЗ рд▓реЗ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдПрдВрдбреНрд░реЙрдЗрдб рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдореЙрдбрд▓ рдХреЗ рдХрд╛рд░рдг, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗрд╡рд▓ рдЙрд╕ рдереНрд░реЗрдб рд╕реЗ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпреЗ рддрддреНрд╡ рдмрдирд╛рдП рдЧрдП рдереЗ, рдЕрдиреНрдпрдерд╛ рдПрдХ CallFFromWrongThreadException рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, Android API рдПрдХ рд╕рд╛рде рдХрдИ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг 1. рджреЗрдЦреЗрдВ # рдкреЛрд╕реНрдЯ (рдЪрд▓рд╛рдиреЗ рдпреЛрдЧреНрдп рдХрд╛рд░реНрд░рд╡рд╛рдИ)ред public class MainActivity extends Activity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.hello); WorkingClass workingClass = new WorkingClass(); Thread thread = new Thread(workingClass); thread.start(); } class WorkingClass implements Runnable{ @Override public void run() {
рдЙрджрд╛рд╣рд░рдг 2. рдЧрддрд┐рд╡рд┐рдзрд┐ # runOnUiThread (рд░рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреНрд░рд┐рдпрд╛)ред public class MainActivity extends Activity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.hello); WorkingClass workingClass = new WorkingClass(); Thread thread = new Thread(workingClass); thread.start(); } class WorkingClass implements Runnable{ @Override public void run() {
рдЙрджрд╛рд╣рд░рдг 3. рд╣реИрдВрдбрд▓рд░ред public class MainActivity extends Activity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.hello); WorkingClass workingClass = new WorkingClass(true); Thread thread = new Thread(workingClass); thread.start(); } class WorkingClass implements Runnable{ public static final int SUCCESS = 1; public static final int FAIL = 2; private boolean dummyResult; public WorkingClass(boolean dummyResult){ this.dummyResult = dummyResult; } @Override public void run() {
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдХреЛрдб рд░рдирдиреЗрдмрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдпрд╛ рдмрдбрд╝реЗ рд╣реИрдВрдбрд▓рд░ рд╡рд░реНрдЧ рдХреЗ рдвреЗрд░ рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдореБрдЦреНрдп рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдзрд╛рд░рд╛рдУрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдХрд╛рдо рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдВрдбреНрд░реЙрдЗрдб 1.5 рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА AsyncTask рдХреНрд▓рд╛рд╕ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдереА
AsyncTask
AsyncTask рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╡рдВрд╢рдЬ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, AsyncTask рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛: onPreExecute (), doInBackground (Params ...), onPostExecute (рдкрд░рд┐рдгрд╛рдо), рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдФрд░ рдЕрдВрддрд┐рдо UI рдереНрд░реЗрдб рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдЕрд▓рдЧ рд╕реЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, AsyncTask рд╡рд░реНрдЧ UI рдереНрд░реЗрдб рдХреЛ UI рд╕реНрдЯреНрд░рд┐рдк (рдкреНрд░рдЧрддрд┐ ...) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдкреНрд░рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпреВрдЖрдИ рдереНрд░реЗрдб рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ UI рдереНрд░реЗрдб рдореЗрдВ onProgressUpdate (рдкреНрд░рдЧрддрд┐ ...) рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
AsyncTask рдЙрджрд╛рд╣рд░рдг public class MainActivity extends Activity { private static final String IMAGE_URL = "http://eastbancgroup.com/images/ebtLogo.gif"; TextView textView; ImageView imageView; ProgressDialog progressDialog; DownloadTask downloadTask; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.hello); imageView = (ImageView)findViewById(R.id.imageView); downloadTask = new DownloadTask();
рдЪрд┐рддреНрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдЙрджрд╛рд╣рд░рдг AsyncTask рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ: рддреИрдпрд╛рд░реА, рдкреГрд╖реНрдарднреВрдорд┐ рд╕рдВрдЪрд╛рд▓рди, рдЕрджреНрдпрддрди рдкреНрд░рдЧрддрд┐, рдЕрдВрддрд┐рдо рдХреНрд░рд┐рдпрд╛рдПрдВ рдФрд░ рдХрд╛рдо рд░реЛрдХрдирд╛ред рдФрд░ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдереНрд░реЗрдб рдФрд░ рдореБрдЦреНрдп рдПрдХ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрджреНрдпрдкрд┐ рдереНрд░реЗрдб рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рд╛рде рдереНрд░реЗрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП AsyncTask рдЕрдХреНрд╕рд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рдЕрдзрд┐рдХ рд▓рд╛рднрдкреНрд░рдж рд╣реИред рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- AsyncTask рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдирдП рдзрд╛рдЧреЗ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдереНрд░реЗрдб # рд╕реЗрдЯрдкрд╛рдпрд░рд┐рдЯреА (int рдкреНрд░рд╛рдердорд┐рдХрддрд╛) рд╡рд┐рдзрд┐ https://developer.android.com/reference/java/lang/Thread.html#thPriority(int) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
- рдПрдВрдбреНрд░реЙрдЗрдб рд╣рдиреАрдХреЙрдо рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдХреЗ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, AsyncTask рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рднреА рдкреГрд╖реНрдарднреВрдорд┐ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдзрд╛рдЧрд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рджреВрд╕рд░рд╛ рдмрд┐рдВрджреБ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рдо рдХреЗ рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рдХрд╛рд░рдг, рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдЯрд╛рдЗрдорд░)ред AsyncTask рдХрд╛ рдРрд╕рд╛ рдЙрджрд╛рд╣рд░рдг рдХрддрд╛рд░ рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ рдФрд░ рдмрд╛рдж рдХреЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХреЛ рдЪрд▓рдиреЗ рд╕реЗ рд░реЛрдХреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдереНрд░реЗрдб рдФрд░ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдЯрд╛рдЗрдорд░ред public class MainActivity extends Activity { TextView textView; private int counter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); counter = 0; textView = (TextView)findViewById(R.id.hello);
рдиреЛрдЯ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдХрдИ AsyncTask рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ AsyncTask # executeOnExecutor (рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯрд░ рдПрдХреНрдЬрд╝рдХреНрдпреВрдЯ, рдкрд░рдореНрд╕ ... рдкрд░рдореЗрд╕) рд╡рд┐рдзрд┐ https://developer.android.com/reference/android/os-AsyncTask.html рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ редрдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдереНрд░реЗрдб рдФрд░ AsyncTask рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдореЙрдбрд▓ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХрд╛рдо рдХрд░рдирд╛, рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ, AsyncTask рдпрд╛ рдереНрд░реЗрдб рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ рд╣рдорд╛рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛, рдЬрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд░реВрдк рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдХреНрд░реАрди рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рд░ рдмрд╛рд░ рдЬрдм рд╕реНрдХреНрд░реАрди рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ AsyncTask рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рдЬрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛,
рдЙрддрдиреА рд╣реА рддреЗрдЬрд╝реА рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди
рдЖрдЙрдЯрдСрдлрд╝рдореИрд░реЗрд░реА рдПрд░рд░ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рднреА рдмрджрддрд░, рд╢рд╛рдпрдж, рдЕрдирд╛рдо рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХрдИ рд╢реИрдХреНрд╖рд┐рдХ рд▓реЗрдЦреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд┐рд╕реА рдирдП рдХрд╛рд░реНрдп рдпрд╛ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рд╕рд╣реЗрдЬреЗ рдмрд┐рдирд╛, рдЖрдк рдЦреБрдж рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рдЧрддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рд╡рдВрдЪрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рдЙрд╕реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд░реЛрдХ рджреЗрдВред
рдХреБрд▓:
рдереНрд░реЗрдб рдФрд░ AsyncTask рд╡рд░реНрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рд╕реЗ, рдХрдИ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд╛рд░реНрдп рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдЪрд┐рдд рд╣реИ:
- рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрдЪрд╛рд▓рди рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕реАрдкреАрдпреВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдСрдкрд░реЗрд╢рдиред
- рдСрдкрд░реЗрд╢рди рдХрдИ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдкрд░ред
- рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрдИ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реВрддреНрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред
рдХрд╛рд░реНрдп рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП AsyncTask рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдЪрд┐рдд рд╣реИ:
- рд╕рдВрдЪрд╛рд▓рди рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред рдереЛрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛, рд╕рд░рд▓ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдСрдкрд░реЗрд╢рдиред
- рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдереНрд░реЗрдбреНрд╕ рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдВред
рдереНрд░реЗрдб рдФрд░ AsyncTask рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рд▓рдЧрд╛рдИ рдЧрдИ рдореБрдЦреНрдп рд╕реНрдерд┐рддрд┐: рдпрджрд┐ рдЧрддрд┐рд╡рд┐рдзрд┐ / рдлрд╝реНрд░реИрдЧрдореЗрдВрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд╛рдо рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдпрд╣ рдЧрддрд┐рд╡рд┐рдзрд┐ / рдлреНрд░реИрдЧрдореЗрдВрдЯ рдХреЗ рд░реБрдХрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд▓реЛрдбрд░
рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрд╡реЗрджрди рдХреЗ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдореЗрдВ рдЕрдиреБрдореЗрдп рд╣реИ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдзреАрдорд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ
рдПрдПрдирдЖрд░ рд╕рдВрджреЗрд╢ рднреА рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдкрд░реЗрд╢рди рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдбреЗрдЯрд╛рдмреЗрд╕ / рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдкрдврд╝ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓ рддрдХ рддрдХ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдереНрд░реЗрдб рдФрд░ рдПрд╕рд┐рдВрдХреНрд╕рдЯрд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб 3.0 рдореЗрдВ рд▓реЛрдбрд░ рдФрд░ рд▓реЛрдбрд░рдореИрдиреЗрдЬрд░ рдЬреИрд╕реЗ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдФрд░ рдлреНрд░реЗрдЧрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ рд╣реИред рдкреБрд░рд╛рдиреЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП,
рдПрдВрдбреНрд░реЙрдЗрдб рд╕рдкреЛрд░реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдорд╛рди рдХрдХреНрд╖рд╛рдПрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
1. рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рд▓реЛрдбрд░ рд╡рд░реНрдЧ рдпрд╛ рдЙрд╕рдХреЗ рдорд╛рдирдХ рд╡рдВрд╢ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред
2. рдЗрд╕рдореЗрдВ рдЬреЗрдиреЗрд░рд┐рдХ-рдЯрд╛рдЗрдк рдбреА рдбреЗрдЯрд╛ рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
3. рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ, LoaderManager рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рд▓реЛрдбрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ, рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдВ рдФрд░ LoaderManager.LoaderCallbacks рдХреЛ рдореИрдиреЗрдЬрд░ рдХреЛ рдХреЙрд▓рдмреИрдХ рдХрд░реЗрдВред
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдХреИрд╕реЗ, рдорд╛рдирдХ CursorLoader рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдлреЛрди рд╕рдВрдкрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЛрдбрд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдгред public class MainActivity extends ListActivity implements LoaderCallbacks<Cursor> {
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЕрдиреБрдорддрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред
рдХреБрд▓:
рд▓реЛрдбрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдЧрддрд┐рд╡рд┐рдзрд┐, рдЯреБрдХрдбрд╝рд╛) рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдЗрди рдШрдЯрдХреЛрдВ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд╕рд╛рде рддреБрд▓рдиреАрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реЗрд╡рд╛ рдФрд░ рдЗрд░рд╛рджреЗ
рд╕реЗрд╡рд╛ Android рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд╕реЗрд╡рд╛ рд╕реНрд╡рдпрдВ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рд╕реЗрд╡рд╛ рдХрд╛ рдЕрдкрдирд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реИ, рдФрд░ рдпрд╣ рдЗрд╕рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рд╕реЗрд╡рд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдЕрддрд┐рд░рд┐рдХреНрдд рдереНрд░реЗрдбреНрд╕ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд┐рдП рдмрд┐рдирд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реЗрд╡рд╛ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ рджреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: ServiceConnection / IBinder рдЗрдВрдЯрд░рдлреЗрд╕ рдпрд╛ рдкреНрд░рд╕рд╛рд░рдг рд╕рдВрджреЗрд╢ред рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдХрд╛ рд╕рд╛рд░ рд╕реЗрд╡рд╛ рдХреЗ рдЪрд▓ рд░рд╣реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдХрд╣рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИ, рдпрд╣ рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИред рдФрд░ рдкреНрд░рд╕рд╛рд░рдг рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдВрдЪрд╛рд░ рдХреЗрд╡рд▓ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕реЗрд╡рд╛ рдЙрджрд╛рд╣рд░рдгред public class BackgroundService extends Service { public static final String CHANNEL = BackgroundService.class.getSimpleName()+".broadcast";
public class MainActivity extends Activity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.hello);
рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рд╕реЗрд╡рд╛, рд╕рд╛рде рд╣реА рдЧрддрд┐рд╡рд┐рдзрд┐, рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдШреЛрд╖рдгрд╛рдкрддреНрд░ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреАрдЖрдИ рдЗрдВрдЯреЗрдВрдЯрд╕реЗрд╡рд░ рд╡рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдорд╛рдирдХ рд╕реЗрд╡рд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рдЬрдм рдПрдХ рдирдпрд╛ рдЕрдиреБрд░реЛрдз рдЖрддрд╛ рд╣реИ, рддреЛ IntentService рдПрдХ рдирдпрд╛ рдереНрд░реЗрдб рдмрдирд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ IntentService # onHandleIntent (рдЗрд░рд╛рджрд╛ рдЖрд╢рдп)
https://developer.android.com/reference/android/app/IntentService/ononandandIntent(android.content.Intent.Intent) рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред рдЬрд┐рд╕реЗ рдЖрдк рдХреЗрд╡рд▓ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдирдпрд╛ рдЕрдиреБрд░реЛрдз рдЖрдиреЗ рдкрд░ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрднреА рддрдХ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрддрд╛рд░рдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
IntentService рдЙрджрд╛рд╣рд░рдгред public class DownloadService extends IntentService { public DownloadService() { super("DownloadService"); } public static final String CHANNEL = DownloadService.class.getSimpleName()+".broadcast"; private void sendResult() { Intent intent = new Intent(CHANNEL); sendBroadcast(intent); } @Override public IBinder onBind(Intent intent) { return null; }
public class MainActivity extends Activity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.hello);
рдХреБрд▓:
рд╕реЗрд╡рд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рдЖрдорддреМрд░ рдкрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реЗрд╡рд╛ рддрдм рддрдХ рдЬреАрд╡рд┐рдд рд░рд╣реЗрдЧреА рдЬрдм рддрдХ рдпрд╣ рдХрд╛рдо рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ (рдЗрдЪреНрдЫрд┐рдд) рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдПрдХ рдХрддрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ, рдЖрджрд┐, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдкреНрд░рд╕рд╛рд░рдг рд╕рдВрджреЗрд╢ рдХрд╣рд╛рдВ рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдореБрдЦреНрдп рдзрд╛рд░рд╛ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред
DownloadManager
рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреАрдЖрдИ 9 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛, рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд╕рд╣реЗрдЬрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реИ, рдбреЙрд╡реЛрдбрдордирдЧрд░ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЬреЛ рдХреБрдЫ рднреА рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ рд╡рд╣ рдЗрд╕ рдЙрд░реА рд╕реЗрд╡рд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЙрд╕ рдкрд╛рда рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╕реВрдЪрдирд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ DownloadManager рдХреЛ рдЗрд╕ рдШрдЯрдирд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рд╕реЗрд╡рд╛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдЧреАред рдбрд╛рдЙрдирд▓реЛрдб рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдмрд╛рд░ рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рдмрдирд╛рдПрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╣реА рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг DownloadManagerред
DownloadManager рдЙрджрд╛рд╣рд░рдг public class MainActivity extends Activity { private static final String IMAGE_URL = "http://eastbancgroup.com/images/ebtLogo.gif"; ImageView imageView; DownloadManager downloadManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView)findViewById(R.id.imageView);
DownloadManager рдХреЗ рдХрд╛рдо рдореЗрдВ рдПрдХ рдЦрд╝рд╛рд╕рд┐рдпрдд рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рдПрдХ рд╕рдлрд▓ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ DownloadManager.ACTION_NOTIFICATION_CLICKED рдЬреИрд╕реЗ рдкреНрд░рд╕рд╛рд░рдг рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╕реЗрд╡рд╛ рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧреА рдЬреЛ рдЗрд╕ рдХреНрд▓рд┐рдХ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЗрд╕ рдШрдЯрдирд╛ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝реЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдЖрд╢рдп рдлрд╝рд┐рд▓реНрдЯрд░:
<intent-filter> <action android:name="android.intent.action.VIEW" /> <data android:mimeType="application/my-mime" /> (mime type, ) <category android:name="android.intent.category.DEFAULT" /> </intent-filter>
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЬрдм рдЖрдк рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рд▓реЙрдиреНрдЪ рд╣реЛ рдЬрд╛рдПрдЧреА, рдЬрд┐рд╕рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдЗрд░рд╛рджреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
рдЗрд░рд╛рджрд╛ рдЗрд░рд╛рджрд╛ = getIntent ();
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ = рдЖрд╢рдп редgetDataString ();
рдХреБрд▓:
DownloadManager рд╕реЗрд╡рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реБрдЪрд┐ рд▓реЗ рд╕рдХрддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд┐рддреНрд░, рдореАрдбрд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ, рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рднреА рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВредрдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдХрд╛рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреИрдЯрд░реНрди рдХреЛ рдХрд╡рд░ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдЪреНрдЪ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╡рд┐рдзрд┐рдпрд╛рдВ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реИрдВред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдХрд╛рдо рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред