Toza Androidda asinxron operatsiyalarni qanday bajarish mumkin?
sobes.tech AI
AIdan javob
Bir nechta usullar mavjud:
-
Threadlar (Iplar): O'z iplaringizni yaratish va boshqarish.
new Thread(new Runnable() { @Override public void run() { // Uzun davom etadigan operatsiyani bajarish // ... // UI ni yangilash (Handler talab qilinadi) // handler.post(...) } }).start(); -
Handler va Looper: Xabarlarni iplar o'rtasida almashish uchun ishlatiladi, ko'pincha fon iplardan UI ni yangilash uchun.
Handler handler = new Handler(Looper.getMainLooper()); // ... fon iplarda handler.post(new Runnable() { @Override public void run() { // UI ni yangilash } }); -
AsyncTask (eskirgan, ammo bilish foydali): UI ni yangilash bilan asinxron vazifalarni bajarishning oddiy usuli. Yangi kod uchun tavsiya etilmaydi.
private class MyAsyncTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... voids) { // Uzun davom etadigan operatsiyani bajarish return "Natija"; } @Override protected void onPostExecute(String result) { // UI ni natija bilan yangilash } } // ... // new MyAsyncTask().execute(); -
ExecutorService va Future: Ishlarni boshqarish uchun yanada moslashuvchan mexanizm.
ExecutorService executor = Executors.newSingleThreadExecutor(); Future<String> future = executor.submit(new Callable<String>() { @Override public String call() throws Exception { // Uzun davom etadigan operatsiyani bajarish return "Natija"; } }); // Natijani olish (bloklovchi) // String result = future.get(); -
Kotlin Korutinalari: Kotlinda zamonaviy asinxron dasturlash yondashuvi, korutinalarga asoslangan. Qo'shimcha bog'lamalarni talab qiladi.
import kotlinx.coroutines.* // ... korutina doirasida (masalan, viewModelScope) GlobalScope.launch(Dispatchers.IO) { // Orqa fon IO iplarda bajarish // Uzun davom etadigan operatsiyani bajarish withContext(Dispatchers.Main) { // UI ni yangilash uchun asosiy iplga o'tish // UI ni yangilash } }
Usul tanlovi vazifaning murakkabligiga, talab qilingan iplarga nazorat darajasiga va til (Java/Kotlin) afzalliklariga bog'liq. Zamonaviy Android dasturlashda Kotlin Korutinalaridan yoki RxJava yoki Flow kabi kutubxonalardan foydalanishni tavsiya etiladi.