Sobes.tech
Middle

Таза Androidде асинхрондук операцияларды кантип ишке ашыруу керек?

sobes.tech AI

AIден жооп

Көптөгөн жолдорду колдонсо болот:

  • Thread: Жаңы агымды түзүү — тапшырманы аткаруу үчүн. Жөнөкөй, бирок жашоо циклин жана маалыматтарды кайра негизги агымга өткөрүп берүү үчүн кошумча логика талап кылынат (Handler, runOnUiThread).

    new Thread(new Runnable() {
        @Override
        public void run() {
            // Асимхрондук операцияны аткаруу
            // UI жаңыртуу `runOnUiThread` же `Handler` аркылуу
        }
    }).start();
    
  • AsyncTask: Эскирген, бирок жөнөкөй класс — фондук операцияларды аткаруу жана UI жаңыртуу үчүн. onPreExecute, doInBackground, onProgressUpdate, onPostExecute методдорун камсыз кылат.

    private static class MyAsyncTask extends AsyncTask<Void, Void, String> {
        @Override
        protected String doInBackground(Void... voids) {
            // Асимхрондук операцияны аткаруу
            return "Жыйынтык";
        }
    
        @Override
        protected void onPostExecute(String result) {
            // Негизги агымда UI жаңыртуу
        }
    }
    
    // Ишке киргизүү: new MyAsyncTask().execute();
    
  • Handler жана Looper: Жакшыраак механизим — билдирүүлөрдү жана тапшырмаларды агымдар ортосунда жөнөтүү жана иштетүү. Handler түзүлгөн агымдын Looper менен байланышкан.

    Handler handler = new Handler(Looper.getMainLooper()); // Негизги агым үчүн
    
    handler.post(new Runnable() {
        @Override
        public void run() {
            // Асимхрондук операциядан кийин негизги агымда тапшырманы аткаруу
        }
    });
    
  • ExecutorService жана Callable/Runnable: Java стандарттык механизмдери — агымдар пулун башкаруу. Ресурстарды натыйжалуу колдонуп, көп тапшырмаларды аткарууну көздөйт.

    ExecutorService executor = Executors.newSingleThreadExecutor(); // же башка түрү
    
    executor.submit(new Runnable() {
        @Override
        public void run() {
            // Асимхрондук операцияны аткаруу
        }
    });
    
    // же submit(Callable) — натыйжаны алуу үчүн
    
  • Coroutine (Kotlin менен): Атайын жана ыңгайлуу — Kotlin-да асинхрондук операцияларды башкаруу. Императивдүү стилиде асинхрондук код жазууга мүмкүндүк берет. Тийиштүү көзкаранды болууларды кошуу талап кылынат.

    import kotlinx.coroutines.*
    
    GlobalScope.launch(Dispatchers.IO) {
        // Фондук агымда асинхрондук операцияны аткаруу
        withContext(Dispatchers.Main) {
            // Негизги агымда UI жаңыртуу
        }
    }