Sobes.tech
Junior — Middle

Kako izvršiti servis u posebnom thread-u za izvršenje kratkoročne zadatka?

sobes.tech АИ

Одговор од АИ

Da biste izvršili servis u zasebnoj niti za kratkoročni zadatak na Androidu, često koristite klasu IntentService (iako je zastarela, ali koncept je koristan) ili kreirate sopstveni servis u kojem pokrećete novu nit. Glavna ideja je da ne blokirate glavnu nit korisničkog interfejsa.

Primer sa korišćenjem IntentService (zastarelo, ali jednostavan način):

public class MyIntentService extends IntentService {
    public MyIntentService() {
        super("MyIntentService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // Ovde se izvršava kratkoročni zadatak u zasebnoj niti
    }
}

Ako koristite obični Service, možete pokrenuti novu nit unutar onStartCommand:

public class MyService extends Service {
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        new Thread(() -> {
            // Kratkoročni zadatak
            stopSelf(); // Zaustavlja servis nakon izvršenja
        }).start();
        return START_NOT_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

Na ovaj način, servis obavlja posao u zasebnoj niti, ne blokira UI, i zaustavlja se nakon završetka zadatka.