Sobes.tech
Middle

Temiz Android'de asenkron işlemler nasıl yapılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Çeşitli yöntemler vardır:

  1. İşlemler (Threads): Kendi iş parçacıklarınızı oluşturma ve yönetme.

    new Thread(new Runnable() {
        @Override
        public void run() {
            // Uzun süren bir işlemi yürütme
            // ...
            // UI güncellemesi (Handler gerektirir)
            // handler.post(...)
        }
    }).start();
    
  2. Handler ve Looper: Mesaj alışverişi için kullanılır, genellikle arka planda çalışan bir iş parçacığından UI'yi güncellemek için.

    Handler handler = new Handler(Looper.getMainLooper());
    // ... arka planda
    handler.post(new Runnable() {
        @Override
        public void run() {
            // UI güncelle
        }
    });
    
  3. AsyncTask (eski, ama bilmek faydalı): UI güncellemesi ile asenkron görevleri yürütmenin basit yolu. Yeni kodlar için önerilmez.

    private class MyAsyncTask extends AsyncTask<Void, Void, String> {
        @Override
        protected String doInBackground(Void... voids) {
            // Uzun süren bir işlemi yürütme
            return "Sonuç";
        }
    
        @Override
        protected void onPostExecute(String result) {
            // UI'yi güncelle
        }
    }
    // ...
    // new MyAsyncTask().execute();
    
  4. ExecutorService ve Future: İşlem havuzlarını yönetmek için daha esnek bir mekanizma.

    ExecutorService executor = Executors.newSingleThreadExecutor();
    Future<String> future = executor.submit(new Callable<String>() {
        @Override
        public String call() throws Exception {
            // Uzun süren bir işlemi yürütme
            return "Sonuç";
        }
    });
    // Sonucu alma (bloklayıcı)
    // String result = future.get();
    
  5. Kotlin Coroutines: Kotlin'de modern asenkron programlama yaklaşımı, coroutine'lere dayanır. Bağımlılık eklenmesi gerekir.

    import kotlinx.coroutines.*
    
    // ... coroutine scope içinde (örneğin, viewModelScope)
    GlobalScope.launch(Dispatchers.IO) { // Arka plan IO iş parçacığında yürütme
        // Uzun süren bir işlemi yürütme
        withContext(Dispatchers.Main) { // UI güncellemek için ana iş parçacığına geçiş
            // UI güncelle
        }
    }
    

Yöntem seçimi, görevin karmaşıklığına, gereken iş parçacığı kontrol seviyesine ve dil tercihlerine (Java/Kotlin) bağlıdır. Modern Android geliştirmede, Kotlin Coroutines veya RxJava veya Flow gibi kütüphanelerin kullanılması önerilir.