Sobes.tech
Middle

Təmiz Android-də asinxron əməliyyatları necə başlatmaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

İstifadə oluna biləcək bir neçə üsul var:

  • Thread: Yeni bir ip yaratmaq və vəzifəni yerinə yetirmək. Sadədir, lakin həyat dövrünü idarə etmək və məlumatları əsas ipə geri ötürmək əlavə məntiq tələb edir (Handler, runOnUiThread).

    new Thread(new Runnable() {
        @Override
        public void run() {
            // Asinxron əməliyyat yerinə yetirmək
            // UI-ni runOnUiThread və ya Handler vasitəsilə yeniləyin
        }
    }).start();
    
  • AsyncTask: Köhnəlib, lakin fon əməliyyatlarını yerinə yetirmək və UI-ni yeniləmək üçün sadə sinif. onPreExecute, doInBackground, onProgressUpdate, onPostExecute metodlarını təmin edir.

    private static class MyAsyncTask extends AsyncTask<Void, Void, String> {
        @Override
        protected String doInBackground(Void... voids) {
            // Asinxron əməliyyat yerinə yetirmək
            return "Nəticə";
        }
    
        @Override
        protected void onPostExecute(String result) {
            // Əsas ipdə UI-ni yeniləyin
        }
    }
    
    // İşə salın: new MyAsyncTask().execute();
    
  • HandlerLooper: Mesajlar və tapşırıqlar arasında göndərmək və işləmək üçün daha çevik mexanizm. Handler, yaradıldığı ipin Looper-inə bağlıdır.

    Handler handler = new Handler(Looper.getMainLooper()); // Əsas ip üçün
    
    handler.post(new Runnable() {
        @Override
        public void run() {
            // Asinxron əməliyyatdan sonra əsas ipdə tapşırıq yerinə yetirin
        }
    });
    
  • ExecutorServiceCallable/Runnable: Java-nın standart mexanizmləri, ip hovuzunu idarə etmək üçün. Resurslardan daha səmərəli istifadə etməyə və çoxsaylı tapşırıqları idarə etməyə imkan verir.

    ExecutorService executor = Executors.newSingleThreadExecutor(); // və ya başqa növ executor
    
    executor.submit(new Runnable() {
        @Override
        public void run() {
            // Asinxron əməliyyat yerinə yetirmək
        }
    });
    
    // və ya nəticə almaq üçün submit(Callable)
    
  • Coroutine (Kotlin ilə): Kotlin-də asinxron əməliyyatları idarə etmək üçün daha müasir və rahat yol. İmpərativ üslubda asinxron kod yazmağa imkan verir. Müvafiq asılılıqları əlavə etmək tələb olunur.

    import kotlinx.coroutines.*
    
    GlobalScope.launch(Dispatchers.IO) {
        // Arxa planda asinxron əməliyyat yerinə yetirmək
        withContext(Dispatchers.Main) {
            // UI-ni əsas ipdə yeniləyin
        }
    }