Junior — Middle
Kā var izpildīt pakalpojumu atsevišķā pavedienā īslaicīga uzdevuma veikšanai?
sobes.tech AI
Atbilde no AI
Lai veiktu pakalpojumu atsevišķā pavedienā īslaicīgai uzdevumam Android, bieži izmanto klasi IntentService (lai gan tā ir novecojusi, bet koncepcija ir noderīga) vai izveido savu pakalpojumu, kurā tiek palaists jauns pavediens. Galvenā ideja ir neblokēt galveno UI pavedienu.
Piemērs ar IntentService (novecojis, bet vienkāršs veids):
public class MyIntentService extends IntentService {
public MyIntentService() {
super("MyIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
// Šeit tiek veikts īslaicīgs uzdevums atsevišķā pavedienā
}
}
Ja izmantojat parastu Service, varat sākt jaunu pavedienu onStartCommand iekšpusē:
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(() -> {
// Īslaicīgs uzdevums
stopSelf(); // Pakalpojums tiek apturēts pēc pabeigšanas
}).start();
return START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Tādējādi pakalpojums veic darbu atsevišķā pavedienā, neblokējot UI, un pēc uzdevuma pabeigšanas tas tiek apturēts.