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:
-
İş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(); -
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 } }); -
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(); -
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(); -
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.