Sobes.tech
Junior — Middle

Kuidas saab teenust eraldi niidil täita lühiajalise ülesande täitmiseks?

sobes.tech AI

Vastus AI-lt

Androidis, et teha lühiajalise ülesande jaoks teenus eraldi niidis, kasutatakse sageli klassi IntentService (kuigi see on vananenud, kuid kontseptsioon on kasulik) või luuakse oma teenus, kus käivitatakse uus niit. Peamine mõte on mitte blokeerida peamist kasutajaliidese niiti.

Näide IntentService kasutamisest (vananenud, kuid lihtne viis):

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

    @Override
    protected void onHandleIntent(Intent intent) {
        // Siin täidetakse lühiajaline ülesanne eraldi niidis
    }
}

Kui kasutate tavalist Service-i, saate onStartCommand sees käivitada uue niidi:

public class MyService extends Service {
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        new Thread(() -> {
            // Lühiajaline ülesanne
            stopSelf(); // Teenuse lõpetamine pärast täitmist
        }).start();
        return START_NOT_STICKY;
    }

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

Seega täidab teenus oma töö eraldi niidis, mitte blokeerides UI-d, ja lõpetab pärast ülesande lõpetamist.