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,onPostExecutemetodları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(); -
HandlervəLooper: Mesajlar və tapşırıqlar arasında göndərmək və işləmək üçün daha çevik mexanizm.Handler, yaradıldığı ipinLooper-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 } }); -
ExecutorServicevəCallable/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 } }