Sobes.tech
Middle

Temiz Android'de asenkron işlemleri nasıl başlatırsınız?

sobes.tech yapay zeka

AI'dan gelen yanıt

Birden fazla yöntem kullanılabilir:

  • Thread: Görevleri yürütmek için yeni bir iş parçacığı oluşturma. Basit, ancak yaşam döngüsünü yönetmek ve ana iş parçacığına veri iletmek ek mantık gerektirir (Handler, runOnUiThread).

    new Thread(new Runnable() {
        @Override
        public void run() {
            // Asenkron işlem yapma
            // UI güncellemesi için runOnUiThread veya Handler kullan
        }
    }).start();
    
  • AsyncTask: Artık kullanılmayan, ancak arka plan işlemleri yapmak ve UI'yi güncellemek için basit bir sınıf. onPreExecute, doInBackground, onProgressUpdate, onPostExecute metodlarını sağlar.

    private static class MyAsyncTask extends AsyncTask<Void, Void, String> {
        @Override
        protected String doInBackground(Void... voids) {
            // Asenkron işlem yap
            return "Sonuç";
        }
    
        @Override
        protected void onPostExecute(String result) {
            // Ana iş parçacığında UI güncelle
        }
    }
    
    // Çalıştır: new MyAsyncTask().execute();
    
  • Handler ve Looper: Mesajlar ve görevler arasında iletişim ve işlem için daha esnek bir mekanizma. Handler, oluşturulduğu iş parçacığının Looper'ına bağlıdır.

    Handler handler = new Handler(Looper.getMainLooper()); // Ana iş parçacığı için
    
    handler.post(new Runnable() {
        @Override
        public void run() {
            // Asenkron işlemeden sonra ana iş parçacığında görev yap
        }
    });
    
  • ExecutorService ve Callable/Runnable: Java'nın standart mekanizmaları, iş parçacığı havuzunu yönetmek için. Kaynakları daha verimli kullanmaya ve çoklu görevleri yönetmeye olanak tanır.

    ExecutorService executor = Executors.newSingleThreadExecutor(); // veya başka bir tür executor
    
    executor.submit(new Runnable() {
        @Override
        public void run() {
            // Asenkron işlem yap
        }
    });
    
    // veya sonuç almak için submit(Callable)
    
  • Coroutine (Kotlin ile): Kotlin'de asenkron işlemleri yönetmek için daha modern ve kullanışlı bir yöntem. İmpératif tarzda asenkron kod yazmaya olanak tanır. Uygun bağımlılıkların eklenmesini gerektirir.

    import kotlinx.coroutines.*
    
    GlobalScope.launch(Dispatchers.IO) {
        // Arka planda asenkron işlem yap
        withContext(Dispatchers.Main) {
            // UI'yi ana iş parçacığında güncelle
        }
    }