Чӣ гуна амалиётҳои асинхронро дар Android тоза иҷро кардан мумкин аст?
sobes.tech AI
Ҷавоб аз AI
Ҳудуди чанд роҳ вуҷуд дорад:
-
Потҳо (Threads): Эҷод ва идоракунии потҳои худ.
new Thread(new Runnable() { @Override public void run() { // Иҷрои амали дароз // ... // Навсозии UI (талап мекунад Handler) // handler.post(...) } }).start(); -
Handler ва Looper: Барои мубодилаи паёмҳо байни потҳо истифода мешаванд, аксар вақт барои навсозии UI аз поти пасзамина.
Handler handler = new Handler(Looper.getMainLooper()); // ... дар поти пасзамина handler.post(new Runnable() { @Override public void run() { // Навсозии UI } }); -
AsyncTask (қатъ шудааст, аммо фоиданок аст): Роҳи содда барои иҷрои вазифаҳои асинхронӣ бо навсозии UI. Тавсия намешавад барои коди нав.
private class MyAsyncTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... voids) { // Иҷрои амали дароз return "Натиҷа"; } @Override protected void onPostExecute(String result) { // Навсозии UI бо натиҷа } } // ... // new MyAsyncTask().execute(); -
ExecutorService ва Future: Механизми бештар флексибил барои идоракунии пулҳои пот.
ExecutorService executor = Executors.newSingleThreadExecutor(); Future<String> future = executor.submit(new Callable<String>() { @Override public String call() throws Exception { // Иҷрои амали дароз return "Натиҷа"; } }); // Гирифтани натиҷа (блоккунанда) // String result = future.get(); -
Kotlin Coroutines: Равиши муосир барои барномасозии асинхронӣ дар Kotlin, асос ёфта дар сопрограмаҳо. Ниёз ба илова кардани вобастагиҳо.
import kotlinx.coroutines.* // ... дар скоупи корутин (масалан, viewModelScope) GlobalScope.launch(Dispatchers.IO) { // Иҷро дар поти пасзаминаи IO // Иҷрои амали дароз withContext(Dispatchers.Main) { // гузариш ба поти асосӣ барои навсозии UI // Навсозии UI } }
Интихоби усул вобаста ба мураккабии вазифа, сатҳи назорат дар потҳо ва афзалиятҳои забон (Java/Kotlin). Дар таҳаввулоти ҳозираи Android тавсия дода мешавад, ки Kotlin Coroutines ё китобхонаҳои асинхронӣ, ба монанди RxJava ё Flow, истифода шаванд.