Junior — Middle
Hogyan lehet egy szolgáltatást külön szálon végrehajtani rövid távú feladat elvégzése érdekében?
sobes.tech MI
Válasz az MI-től
Androidon egy rövid távú feladat végrehajtásához külön szálon gyakran használják az IntentService osztályt (bár elavult, de a koncepció hasznos), vagy saját szolgáltatást hoznak létre, amelyben új szálat indítanak. A fő ötlet az, hogy ne blokkolják a fő UI szálat.
Példa az IntentService használatával (elavult, de egyszerű módszer):
public class MyIntentService extends IntentService {
public MyIntentService() {
super("MyIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
// Itt végrehajtódik egy rövid távú feladat külön szálon
}
}
Ha egy normál Service-t használ, akkor az onStartCommand-ban indíthatunk egy új szálat:
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(() -> {
// Rövid távú feladat
stopSelf(); // A szolgáltatás leállítása a végrehajtás után
}).start();
return START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Így a szolgáltatás egy külön szálon végzi a munkát, nem blokkolja a UI-t, és a feladat befejezése után leáll.