Kā palaist asīnhronas operācijas tīrā Android?
sobes.tech AI
Atbilde no AI
Ir vairākus veidus:
-
Thread: Izveidot jaunu pavedienu uzdevuma izpildei. Vienkārši, bet dzīves cikla pārvaldība un datu nodošana atpakaļ galvenajā pavedienā prasa papildu loģiku (Handler,runOnUiThread).new Thread(new Runnable() { @Override public void run() { // Asinhrona operācija // UI atjaunināšana caur runOnUiThread vai Handler } }).start(); -
AsyncTask: Senāks, bet vienkāršs klases veids, lai veiktu fonu operācijas un atjauninātu UI. Nodrošina metodesonPreExecute,doInBackground,onProgressUpdate,onPostExecute.private static class MyAsyncTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... voids) { // Asinhrona operācija return "Rezultāts"; } @Override protected void onPostExecute(String result) { // UI atjaunināšana galvenajā pavedienā } } // Sākt: new MyAsyncTask().execute(); -
HandlerunLooper: Elastīgāks mehānisms ziņojumu un uzdevumu sūtīšanai un apstrādei starp pavedieniem.Handlerir saistīts arLooperpavedienu, kurā tas ir izveidots.Handler handler = new Handler(Looper.getMainLooper()); // Galvenajam pavedienam handler.post(new Runnable() { @Override public void run() { // Uzdevuma izpilde galvenajā pavedienā pēc asinhronas operācijas } }); -
ExecutorServiceunCallable/Runnable: Standarta Java mehānismi pavedienu baseinu pārvaldībai. Ļauj efektīvāk izmantot resursus un pārvaldīt daudzu uzdevumu izpildi.ExecutorService executor = Executors.newSingleThreadExecutor(); // Vai cits tips executor.submit(new Runnable() { @Override public void run() { // Asinhrona operācija } }); // Vai submit(Callable) rezultāta iegūšanai -
Coroutine(ar Kotlin): Modernāks un ērtāks veids, kā pārvaldīt asinhronas operācijas Kotlin. Atļauj rakstīt asinhrono kodu imperatīvā stilā. Nepieciešams pievienot atbilstošas atkarības.import kotlinx.coroutines.* GlobalScope.launch(Dispatchers.IO) { // Asinhrona operācija fonā withContext(Dispatchers.Main) { // UI atjaunināšana galvenajā pavedienā } }