Sobes.tech
Junior — Middle

Qısa müddətli tapşırıq üçün xidməti ayrıca bir iş parçacığında necə icra etmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Android-də qısa müddətli vəzifə üçün xidməti ayrı bir iş ipində icra etmək üçün tez-tez IntentService sinfi istifadə olunur (hətta köhnəlib, amma konsept faydalıdır) və ya öz xidmətinizi yaradıb yeni bir iş ipini başlatırsınız. Əsas fikir UI-nin əsas iş ipini bloklamamaqdır.

IntentService ilə nümunə (köhnəlib, amma sadə üsul):

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

    @Override
    protected void onHandleIntent(Intent intent) {
        // Burada qısa müddətli vəzifə ayrı bir iş ipində yerinə yetirilir
    }
}

Əgər adi Service istifadə edirsinizsə, onStartCommand içində yeni bir iş ipini başlada bilərsiniz:

public class MyService extends Service {
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        new Thread(() -> {
            // Qısa müddətli vəzifə
            stopSelf(); // Vəzifə tamamlandıqda xidməti dayandırırıq
        }).start();
        return START_NOT_STICKY;
    }

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

Beləliklə, xidmət işi ayrı bir iş ipində yerinə yetirir, UI-ni bloklamır və vəzifə tamamlandıqda dayanır.