Android

Android Servisler (Services)

► Detaylı anlatım

Servisler arka planda çalışan ve herhangi bir kullanıcı arayüzü bulunmayan bir uygulama bileşenidir. Bir uygulama bileşeni bir servis başlatabilir. Kullanıcı başka bir uygulamaya geçiş yapsa bile başlatılan servis çalışmasına devam eder. Ayrıca, bir bileşen bir hizmete bağlanarak işlemler gerçekleştirebilir. Hizmetler arka planda ağ işlemlerini yönetebilir, müzik çalabilir, dosya işlemlerini gerçekleştirebilir ve bir içerik sağlayıcı ile işlem yapabilirler.

Servisler iki farklı yapıda bulunabilir:

Started (Başlatılmış)

Bir uygulama bileşeni startService() metodunu kullanarak bir hizmeti başlattığında, servis başlatılmış olur. Bir kez başlatıldıktan sonra, servisi başlatan bileşen yok edilse bile, servisler arka planda sonsuza kadar çalışabilir. Genellikle, başlatılmış bir servis tek bir işlem gerçekleştirir ve geriye bir sonuç döndürmez. Örneğin ağ üzerinden bir dosya indirme işlemini bitirdiğinde, servis kendi kendini sona erdirir.

Bound (Bağlanılmış)

Bir uygulama bileşeni bindService() metodunu kullanarak bir hizmete bağlandığında, servis bağlanılmış olur. Bağlanılmış bir servis bileşenlerin servis ile iletişim sağlaması, istekler göndermesi, sonuçlar elde etmesi ve karşılıklı iletişim (Interprocess Communication - IPC) ile işlemler gerçekleştirmesi için bir istemci-sunucu arayüzü sağlar. Bağlanılmış servis bir uygulama bileşeni ona bağlı kaldığı sürece çalışmasına devam eder. Aynı zamanda bir servise bağlanan tüm bileşenler bağlantıyı kestiğinde, servis yok edilir.

Bir servis hem başlatılarak sonsuz şekilde hem de bağlanılarak çalıştırılabilir. Bu çift dönüşüm metodu tanımlanması ile ilgili bir durumdur. onStartCommand() meetodu tanımlanırsa bileşenlerin hizmeti başlatması, onBind() metodu tanımlanırsa hizmete bağlanılması sağlanır.

Bir hizmet başlatılmış, bağlanılmış veya her iki özelliğe birden sahip olsa da, herhangi bir bileşen, farklı bir uygulamaya bile ait olsa, servisi kullanabilir. Ancak, manifest dosyasında bir servisi private olarak tanımlayarak diğer uygulamaların erişimlerini engelleyebilirsiniz.