Junior — Middle
Comment exécuter un service dans un thread séparé pour effectuer une tâche à court terme?
sobes.tech IA
Réponse de l'IA
Pour exécuter un service dans un thread séparé pour une tâche à court terme sur Android, on utilise souvent la classe IntentService (bien qu’elle soit obsolète, mais la conception reste utile) ou on crée un service personnalisé dans lequel on lance un nouveau thread. L’idée principale est de ne pas bloquer le thread principal de l’interface utilisateur.
Exemple avec IntentService (obsolète, mais méthode simple):
public class MyIntentService extends IntentService {
public MyIntentService() {
super("MyIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
// Ici, une tâche à court terme est effectuée dans un thread séparé
}
}
Si vous utilisez un Service classique, vous pouvez lancer un nouveau thread dans onStartCommand:
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(() -> {
// Tâche à court terme
stopSelf(); // Arrête le service après l’exécution
}).start();
return START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Ainsi, le service effectue son travail dans un thread séparé, sans bloquer l’UI, et s’arrête après la fin de la tâche.