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.