рдХреБрдЫ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ,
Google (рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдЕрдкрдирд╛ рдирд┐рд░реНрдгрдп рджрд┐рдпрд╛)ред
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк UI рдереНрд░реЗрдб рдореЗрдВ рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕рдВрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдирд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рдореЙрдбрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ: рдЬрдм рд╕рдВрд╡рд╛рдж рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрд╡рд╛рдж рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВрдбрд▓рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореБрдЭреЗ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд▓рдЧрд╛ рдФрд░ рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдпрджрд┐ рдЖрдк UI рдереНрд░реЗрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдФрд░ рдереНрд░реЗрдб рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдереНрд░реЗрдб рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдореНрдпреВрдЯреЗрдХреНрд╕ рд▓рд┐рдЦрд╛ред рд▓реЙрдХ () рд╡рд┐рдзрд┐ рдЕрдирд▓реЙрдХ рд╣реЛрдиреЗ рддрдХ рдирд┐рдпрдВрддреНрд░рдг рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ () рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
public class Mutex { public synchronized void lock() throws InterruptedException { this.wait(); } public synchronized void unlock() { this.notify(); } }
рдЖрдЧреЗ, рдореИрдВрдиреЗ рд╕рдВрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдореНрдпреВрдЯреЗрдХреНрд╕ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ред рд╡рд░реНрдЧ рд╕рдВрд╡рд╛рдж рдХреЛ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрд╡рд╛рдж рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред
рд╕рднреА рдмрдЯрдиреЛрдВ рдХреЛ рд╣реИрдВрдбрд▓рд░ (1) рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХреЛ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдбрд╛рдпрд▓реЙрдЧ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрд╡рд╛рдж рд╕рдорд╛рдкрди рд╣реИрдВрдбрд▓рд░ (2) рдореНрдпреВрдЯреЗрдХреНрд╕ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдлрд╝рдВрдХреНрд╢рди (3) рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреА рд░рд┐рд╣рд╛рдИ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред
public class SyncDialog { private Dialog mDialog; private Mutex mMutex; private int mResult; private Button mYesButton; private Button mNoButton; private Button mCancelButton; public SyncDialog(Context context) { mMutex = new Mutex(); mDialog = new Dialog(context); mDialog.setContentView(R.layout.dialog); findViews(); mYesButton.setOnClickListener(new OnClickListener() {
рдЦреИрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рддрд╛ рдерд╛: рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ (2) рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреА рд╣реИред рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдпреВрдЖрдИ рдереНрд░реЗрдб (1) рдореЗрдВ рдПрдХ рд╕рд┐рдВрдХрдбрд╛рдпрд▓реЙрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░, рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдереНрд░реЗрдб рдореЗрдВ, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рднреЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдпреВрдЖрдИ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рдпрд▓реЙрдЧ (3) рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддреАрдХреНрд╖рд╛ (4) рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо (5) рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВред
public class MyActivity extends Activity { private SyncDialog syncDialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); syncDialog = new SyncDialog(this);
рдЖрдк AsyncTask рдХреЗ рд╕рд╛рде processDialogs () рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
public class DialogsTask extends AsyncTask<String, Void, Void> { @Override protected Void doInBackground(String... params) { processDialogs(params); return null; } }
рдХрд┐рд╕реА рдШрдЯрдирд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╡рд╛рджреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдХреЗрд╡рд▓ рд╕рдВрд╡рд╛рджреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдорд┐рд▓рд╛ рдФрд░, рд╕рдВрд╡рд╛рдж рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реВрдЪреА рдореЗрдВ рдЕрдЧрд▓реЗ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдирдП рд╕рдВрд╡рд╛рдж рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд░реЗрдВред рдпрд╣ рддрд░реАрдХрд╛ рдореБрдЭреЗ рдХрд╛рдлреА рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдв рд░рд╣реЗ рдереЗред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред