Sobes.tech
Junior — Middle

Ինչպե՞ս կարող եք ծառայությունը կատարել առանձին թելում՝ կարճաժամկետ առաջադրանքը կատարելու համար։

sobes.tech AI

Պատասխան AI-ից

Android-ում կարճաժամկետ առաջադրանքի համար ծառայությունը տարբեր թելում գործարկելու համար հաճախ օգտագործվում է IntentService դասը (համենայն դեպս այն հնացել է, բայց կոնցեպցիան օգտակար է), կամ ստեղծում եք սեփական ծառայությունը, որի մեջ սկսում եք նոր թել։ Հիմնական գաղափարը՝ չխոչընդոտել գլխավոր UI թելին։

Օրինակ IntentService-ի օգտագործմամբ (հնացած, բայց պարզ միջոց՝

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

    @Override
    protected void onHandleIntent(Intent intent) {
        // Այստեղ կատարվում է կարճաժամկետ առաջադրանք տարբեր թելում
    }
}

Եթե օգտագործում եք սովորական Service, ապա onStartCommand-ի մեջ կարող եք սկսել նոր թել՝

public class MyService extends Service {
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        new Thread(() -> {
            // Կարճաժամկետ առաջադրանք
            stopSelf(); // Ծառայությունը դադարում է գործել ավարտից հետո
        }).start();
        return START_NOT_STICKY;
    }

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

Այսպիսով, ծառայությունը կատարում է աշխատանքը տարբեր թելում, չի խոչընդոտում UI-ին, և ավարտվում է առաջադրանքի ավարտից հետո։