Middle
Aké sú spôsoby vytvárania toku v Android?
sobes.tech AI
Odpoveď od AI
V Androidu je možné vytvárať vlákna nasledujúcimi spôsobmi:
-
Dediac od
Thread:// Trieda, ktorá dedí od Thread class MyThread extends Thread { @Override public void run() { // Kód úlohy vykonávanej v novom vlákne System.out.println("Vlákno vytvorené dedičstvom od Thread"); } } // Vytvorenie a spustenie vlákna MyThread myThread = new MyThread(); myThread.start(); -
Implementácia rozhrania
Runnable:// Trieda implementujúca rozhranie Runnable class MyRunnable implements Runnable { @Override public void run() { // Kód úlohy vykonávanej v novom vlákne System.out.println("Vlákno vytvorené implementáciou Runnable"); } } // Vytvorenie vlákna s použitím Runnable Thread thread = new Thread(new MyRunnable()); thread.start(); -
Použitie
AsyncTask(zastaralé): na vykonávanie operácií na pozadí a aktualizáciu UI. -
Použitie
HandlerThread: špeciálna triedaThreadsLooperaHandler, ktorá zjednodušuje prácu s frontou správ na pozadí.// Vytvorenie HandlerThread HandlerThread handlerThread = new HandlerThread("MyHandlerThread"); handlerThread.start(); // Získanie Looperu Looper looper = handlerThread.getLooper(); // Vytvorenie Handlera pripojeného k Looperu Handler handler = new Handler(looper); // Odoslanie úlohy do fronty vlákna handler.post(new Runnable() { @Override public void run() { // Kód úlohy vykonávanej v handlerThread System.out.println("Vlákno vytvorené pomocou HandlerThread"); } }); -
Použitie
ExecutorServiceaThreadPoolExecutor: na správu bazéna vlákien.import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; // Vytvorenie bazéna vlákien s pevnou veľkosťou ExecutorService executor = Executors.newFixedThreadPool(2); // Odoslanie úlohy na vykonanie v bazéne vlákien executor.execute(new Runnable() { @Override public void run() { // Kód úlohy vykonávanej v jednom z vlákien bazéna System.out.println("Vlákno vytvorené pomocou ExecutorService"); } }); // Ukončenie práce bazéna (dôležité na prevenciu únikov) executor.shutdown(); -
Použitie Kotlinových korutín: moderný prístup k asynchrónnemu programovaniu v Android.
import kotlinx.coroutines.* // Spustenie korutiny v pozadí GlobalScope.launch(Dispatchers.IO) { // Kód úlohy vykonávanej v pozadí (IO) vlákne println("Vlákno vytvorené pomocou korutín") }