Threads

Când o aplicație este lansată, sistemul creează un thread de execuție pentru aplicație, numit thread principal. Acest thread este foarte important, deoarece este responsabil cu dispecerizarea evenimentelor către widget-urile corespunzătoare ale interfeței utilizator, inclusiv evenimentele de desenare. De asemenea, este aproape întotdeauna thread-ul în care aplicația ta interacționează cu componentele din pachetele android.widget și android.view ale kit-ului UI Android. Din acest motiv, thread-ul principal este numit uneori thread-ul UI. Totuși, în circumstanțe speciale, thread-ul principal al unei aplicații ar putea să nu fie thread-ul său UI.

Din cauza acestui model cu un singur thread, este vital pentru receptivitatea interfeței utilizator a aplicației tale să nu blochezi thread-ul UI. Dacă ai operații de efectuat care nu sunt instantanee, asigură-te că le faci în thread-uri background sau worker separate. Doar ține minte că nu poți actualiza interfața utilizator din niciun alt thread în afară de thread-ul UI sau thread-ul principal.

Acesta este un exemplu simplu de cum putem folosi declara un thread.

public class ProcessingThread extends Thread {
  // we can pass data to the thread through the constructor
  public ProcessingThread() {
  }

  @Override
  public void run() {
    while(true){ 
        // we perform some work on the thread
    }
  }
}

Pentru a il folosi dintr-un serviciu vom face astfel:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.d(Constants.TAG, "onStartCommand() method was invoked");
    ProcessingThread processingThread = new ProcessingThread();
    processingThread.start();
}