Middle
Android-də xidmətlərin həyat dövrü nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Xidmətin istifadəçi interfeysi (UI) yoxdur və arxa planda işləyir. Onun həyat dövrü üç əsas metod ilə idarə olunur:
onCreate(): Xidmət ilk dəfə yaradıldıqda çağrılır. Burada ilkinləşdirmə həyata keçirilir.onStartCommand()/ bağlanma zamanı çağrılan metod (məsələn,onBind()):onStartCommand()startService()ilə xidməti başladarkən çağrılır. Bu, sistemin xidməti bağladıqda necə bərpa edəcəyini göstərən bayraq qaytarır.onBind()bindService()ilə müştəri xidməti ilə əlaqə qurarkən çağrılır.onDestroy(): Xidmət məhv ediləndə çağrılır. Burada bütün resurslar azad edilir.
Həyat dövrünə təsir edən iki növ xidmət mövcuddur:
- Başladılmış Xidmət (Started Service):
startService()ilə başlayır.stopSelf()və yastopService()ilə açıq şəkildə dayandırılana qədər işləyir. Sistem,onStartCommand()müvafiq bayraq qaytardıqda, onu məhv etdikdən sonra yenidən başlatmağa çalışacaq. - Əlaqəli Xidmət (Bound Service):
bindService()ilə başlayır. Ən azı bir aktiv müştəri ona bağlı olduqda mövcuddur. Bütün müştərilər əlaqəni kəsdikdə, xidmət məhv edilir.onBind()IBindertətbiqini qaytarır və bu, xidməti ilə əlaqə üçün istifadə olunur.
Həyat dövrü diaqramı:
Start Service --+--> onStartCommand() --+--> İşə salınmış
| |
Bind Service ---+--> onBind() -----------+--> Əlaqəli
|
onCreate() -----+
|
+--> onRebind()
|
onDestroy() <---+-------------------------+---- Kəsildi <--- unbindService()
|
+---- Dayandırıldı <--- stopSelf() / stopService()
Əsas nöqtələr:
onCreate()yalnız bir dəfə çağrılır.onStartCommand()təkrarlanan çağrıla bilər, əgərstartService()təkrar-təkrar çağırılırsa.- Xidmət, standart olaraq, əsas axında işləyir. Uzunmüddətli əməliyyatlar ayrı bir axında və ya
IntentServiceistifadə edilərək həyata keçirilməlidir. - Əlaqəli xidmətlərin həyat dövrü daha mürəkkəbdir və müştərilərin vəziyyətindən asılıdır.
Misal üçün onStartCommand():
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Bəzi əməliyyatları yerinə yetir
// Məsələn, arxa planda işə başlamaq
// Sistemə xidmətin məhv edilməsi zamanı necə davranacağını göstərən bayraq qaytarır
return START_STICKY; // Xidmət məhv olunsa, yenidən bərpa olunacaq
}
Misal üçün onBind():
private final IBinder binder = new LocalBinder();
public class LocalBinder extends Binder {
MyService getService() {
// Müştərilər üçün xidmətin nümunəsini qaytarır
return MyService.this;
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return binder;
}
@Override
public boolean onUnbind(Intent intent) {
// Bütün müştərilər əlaqəni kəsəndə çağrılır
return super.onUnbind(intent);
}