Sobes.tech
Middle

Kaip sukurti srautą Android?

sobes.tech AI

Atsakymas iš AI

Android galite kurti srautus šiais būdais:

  • Paveldėjimas iš Thread:

    // Klasė, paveldinti iš `Thread`
    class MyThread extends Thread {
        @Override
        public void run() {
            // Kodo dalis, vykdoma naujame sraute
            System.out.println("Srautas sukurtas paveldėjimu iš `Thread`");
        }
    }
    // Srauto kūrimas ir paleidimas
    MyThread myThread = new MyThread();
    myThread.start();
    
  • Runnable sąsajos įgyvendinimas:

    // Klasė, įgyvendinanti `Runnable` sąsają
    class MyRunnable implements Runnable {
        @Override
        public void run() {
            // Kodo dalis, vykdoma naujame sraute
            System.out.println("Srautas sukurtas `Runnable` įgyvendinimu");
        }
    }
    // Srauto kūrimas naudojant `Runnable`
    Thread thread = new Thread(new MyRunnable());
    thread.start();
    
  • Naudojant AsyncTask (pasenusi): fono operacijų vykdymui ir UI atnaujinimui.

  • Naudojant HandlerThread: specialus Thread klasės tipas su Looper ir Handler, kuris palengvina žinučių eilės darbą fone.

    // `HandlerThread` kūrimas
    HandlerThread handlerThread = new HandlerThread("MyHandlerThread");
    handlerThread.start();
    // `Looper` gavimas
    Looper looper = handlerThread.getLooper();
    // `Handler` sukūrimas, susietas su `Looper`
    Handler handler = new Handler(looper);
    // Užduoties siuntimas į eilę
    handler.post(new Runnable() {
        @Override
        public void run() {
            // Kodo dalis, vykdoma `handlerThread`
            System.out.println("Srautas sukurtas naudojant `HandlerThread`");
        }
    });
    
  • Naudojant ExecutorService ir ThreadPoolExecutor: valdyti srautų bazę.

    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    // Fiksuoto dydžio srautų bazės sukūrimas
    ExecutorService executor = Executors.newFixedThreadPool(2);
    // Užduoties siuntimas vykdymui
    executor.execute(new Runnable() {
        @Override
        public void run() {
            // Kodo dalis, vykdoma viename iš bazės srautų
            System.out.println("Srautas sukurtas naudojant `ExecutorService`");
        }
    });
    // Bazės užbaigimas (svarbu išvengti nutekėjimų)
    executor.shutdown();
    
  • Naudojant Kotlin korutinas: šiuolaikinis požiūris asinchroniniam programavimui Android.

    import kotlinx.coroutines.*
    
    // Korutinos paleidimas fone
    GlobalScope.launch(Dispatchers.IO) {
        // Kodo dalis, vykdoma fone (IO) sraute
        println("Srautas sukurtas naudojant korutinas")
    }