Junior — Middle
როგორ შეიძლება სერვისი შესრულდეს ცალკე ნაკადში მოკლევადიანი დავალების შესასრულებლად?
sobes.tech AI
პასუხი AI-სგან
Android-ში მოკლევადიანი დავალებისთვის სერვისის შესრულება ცალკე ნაკადში ხშირად გამოიყენება IntentService კლასი (მიუხედავად იმისა, რომ ის მოძველებულია, მაგრამ კონცეფცია სასარგებლოა) ან ქმნით საკუთარი სერვისს, სადაც იწყებთ ახალ ნაკადს. მთავარი იდეა — არ დაბლოკოთ მთავარი UI ნაკადი.
IntentService-ის გამოყენების მაგალითი (ძველი, მაგრამ მარტივი მეთოდი):
public class MyIntentService extends IntentService {
public MyIntentService() {
super("MyIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
// აქ ხორციელდება მოკლევადიანი დავალება ცალკე ნაკადში
}
}
თუ ჩვეულებრივ Service-ს იყენებთ, შეგიძლიათ onStartCommand-ში დაიწყოთ ახალი ნაკადი:
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(() -> {
// მოკლევადიანი დავალება
stopSelf(); // სერვისი იკეტება შესრულების შემდეგ
}).start();
return START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
ამ გზით, სერვისი ახორციელებს სამუშაოს ცალკე ნაკადში, არ ბლოკავს UI-ს და დასრულების შემდეგ იკეტება.