Təmiz Android-də asinxron əməliyyatlar necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Bir neçə üsul mövcuddur:
-
İş parçaları (Threads): Öz iş parçalarınızı yaratmaq və idarə etmək.
new Thread(new Runnable() { @Override public void run() { // Uzun müddətli əməliyyatın yerinə yetirilməsi // ... // UI yeniləməsi (Handler tələb edir) // handler.post(...) } }).start(); -
Handler və Looper: Mesajların iş parçaları arasında mübadiləsi üçün istifadə olunur, çox vaxt fon iş parçacığından UI-ni yeniləmək üçün.
Handler handler = new Handler(Looper.getMainLooper()); // ... fon iş parçacığında handler.post(new Runnable() { @Override public void run() { // UI-ni yeniləmək } }); -
AsyncTask (köhnə, amma bilmək faydalıdır): UI yeniləməsi ilə asinxron tapşırıqları yerinə yetirməyin sadə yolu. Yeni kod üçün tövsiyə edilmir.
private class MyAsyncTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... voids) { // Uzun müddətli əməliyyatın yerinə yetirilməsi return "Nəticə"; } @Override protected void onPostExecute(String result) { // UI-ni nəticə ilə yeniləmək } } // ... // new MyAsyncTask().execute(); -
ExecutorService və Future: İş parçaları hovuzlarını idarə etmək üçün daha çevik mexanizm.
ExecutorService executor = Executors.newSingleThreadExecutor(); Future<String> future = executor.submit(new Callable<String>() { @Override public String call() throws Exception { // Uzun müddətli əməliyyatın yerinə yetirilməsi return "Nəticə"; } }); // Nəticəni almaq (bloklama) // String result = future.get(); -
Kotlin Korutinaları: Kotlin-də müasir asinxron proqramlaşdırma yanaşması, korutinalara əsaslanır. Əlavə asılılıqlar tələb edir.
import kotlinx.coroutines.* // ... korutina scope daxilində (məsələn, viewModelScope) GlobalScope.launch(Dispatchers.IO) { // Arxa plan IO iş parçacığında yerinə yetirmə // Uzun müddətli əməliyyatın yerinə yetirilməsi withContext(Dispatchers.Main) { // UI-ni yeniləmək üçün əsas iş parçacığına keçid // UI-ni yeniləmək } }
Yöntem seçimi vəzifənin mürəkkəbliyinə, tələb olunan nəzarət səviyyəsinə və dil üstünlüklərinə (Java/Kotlin) bağlıdır. Müasir Android inkişafında Kotlin Korutinalarından və ya RxJava və ya Flow kimi kitabxanalardan istifadə etmək tövsiyə olunur.