• Sonuç bulunamadı

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi SERVİS BİLEŞENLERİ. BLM401 Dr.Refik SAMET

N/A
N/A
Protected

Academic year: 2022

Share "BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi SERVİS BİLEŞENLERİ. BLM401 Dr.Refik SAMET"

Copied!
17
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi

SERVİS BİLEŞENLERİ

(2)

GİRİŞ (1/5)

• Servisler arka planda görev yapan görsel olmayan Android bileşenleridir.

• Ekranda herhangi bir aktivite görünürken arka planda bir veya daha fazla sayıda

servisler çalışıyor olabilir.

• Müzik çalma, web üzerinden veri aktarımı, kalıcı hafızaya veri yazma okuma gibi zaman alan işlemler kullanıcının ekran üzerindeki

çalışmasını etkilemeden arka planda servisler aracılığı ile yapılabilirler.

(3)

GİRİŞ (2/5)

• Servisler de diğer bileşenler gibi ana aktivite ile aynı tread içerisinde çalışırlar.

• Fazla zaman gerektiren servisler ekranın kilitlenmesine neden olmaktadırlar.

• Kullanıcı bir tuşa bastığında çalışmaya başlayan servis işini bitirene kadar ekran kullanılamaz hale gelmektedir.

• Bu tür istenmeyen özellikleri önlemek için fazla zaman gerektiren servislerin ayrı tread içerisinde çalışması gerekmektedir.

(4)

GİRİŞ (3/5)

•startService() – bir servisi başlatma fonksiyonu;

•onStartService() – servis fonksiyonu;

•stopService() – bir servisi durdurma fonksiyonu;

•bindService() – bir servise bağlanma fonksiyonu;

(5)

GİRİŞ (4/5)

• startService() ile başlatılmak istenen servis

daha önce çalıştırılmamışsa bir nesnesi yaratılır ve çalıştırılmaya başlanır, daha önceden

çalıştırılmışsa da çalışmaya devam eder.

• startService() fonksiyonu her çağırıldığında sistem, servisin onStartService() fonksiyonunu çağırır ve servis stopService() fonksiyonu

çağırılıncaya kadar çalışmaya devam eder.

• startService() birden fazla çağrılmasıyla servisin birden fazla nesnesi yaratılmaz.

(6)

GİRİŞ (5/5)

• startService() ile başlatılan servisi durdurmak için stopService() fonksiyonunun bir defa

çağrılması yeterlidir.

• bindService() bir servise bağlanmak içindir.

• Servis yaratılmamışsa bir nesnesi yine yaratılır.

Ancak bu kez onStartService() çağrılmaz.

• Servise bağlanan aktivite ile servis arasında bir bağlantı kurulur ve aktivite servisle haberleşir.

• Servise bağlı herhangi bir nesne kalmadığında ise servis otomatik olarak durdurulur.

(7)

SERVİSİN YARATILMASI (1/5)

public class DenemeServisi extends Service {

@Override

public void onCreate() { }

@Override

public IBinder onBind(Intent intent) { }

@Override

public int onStartCommand (Intent intent, int flags, int startId) { }

@Override

public void onDestroy() { }

}

(8)

SERVİSİN YARATILMASI (2/5)

• onCreate() metodu: servis ilk kez yaratıldığında sistem bu metodu çağırır.

• Servisin daha sonraki durdurulup başlatılmalarında bu fonksiyon

çağrılmamaktadır.

• İlk kez yaratılma esnasında yapılması gerekenler burada kodlanmalıdır.

(9)

SERVİSİN YARATILMASI (3/5)

• onBind() metodu: servise bir sınıfın bağlanması durumunda çağrılacak olan metottur.

• Bir sınıf bindService() fonksiyonunu

çağırdığında sistem onBind() metodunu çağırır.

• onBind() metodu sonucunda dönen IBinder nesnesi aracılığıyla çağrılan sınıf ile servis haberleşirler.

(10)

SERVİSİN YARATILMASI (4/5)

• onStartCommand () metodu: bir sınıfın startService() fonksiyonunu çağırdığı her

durumda çağrılan servis metotlarından biridir.

• Bu fonksiyon içerisinde servisin yerine

getirmesini istediğimiz işlevleri kodlayabiliriz.

• Servisin harici olarak başlatılıp durdurulması isteniyorsa bu fonksiyonun START_STICKY, yalnızca kendisiyle haberleşirken çalışması

bekleniyorsa bu durumda START_NOT_STICKY sabitini döndürmesi gerekmektedir.

BLM401 Dr.Refik SAMET 10

(11)

SERVİSİN YARATILMASI (5/5)

• onDestroy() metodu: servisin stopService() fonksiyonu ile durdurulması veya herhangi bir bağlantısının kalmaması durumunda sistem servisi ortadan kaldırmadan hemen önce

çağrılan metottur.

• Bu metotla servis içerisinde oluşturulan veri yapılarının hafızadan silinmesi gerekir.

(12)

AndroidManifest.xml Kaydı(1/1)

• Bir uygulamanın tüm bileşenleri

AndroidManifest.xml dosyası içerisinde kaydedilmelidir.

• Servisler de bu dosya içerisinde ve

<application> sekmesi altında tanımlanmalıdır.

(13)

Servisin Çalıştırılması (1/3)

• Bir servisin yaşamaya başlaması için en az bir bileşenin o servisi başlatması lazım.

• Servis başlatma işi startService() veya bindService() fonksiyonları ile yapılır.

• Servis başlatma için intent mesajları kullanılır.

• Genel olarak bir aktivite başladığı anda servisler başlatılmaz.

(14)

Servisin Çalıştırılması (2/3)

• Genel olarak servislerin başlaması kullanıcının bir tuşa basması veya bir menü maddesini seçmesi ile tetiklenir.

• Bu olaylar gerçekleştiğinde de startService() veya bindService()

fonksiyonları, ilgili aktiviteler içindeki

onClick(), onOptionsItemSelected(), vb.

gibi kullanıcı ara yüzlerinden alınan kullanıcı tepkilerine uygun yerlerde çağrılırlar.

(15)

Servisin Çalıştırılması (3/3)

• Kontrolü tanımladığımız aktivitenin elinde olmayan bir servise bağlanmak için

bindService() fonksiyonu çağrılır.

• Bu tür çağırma genellikle sistem

servislerine erişmek için kullanılır ve bu servisle zaman zaman mesaj alışverişi yapılır.

• Bu amaçla aktivite içinde tanımlanan ServiceConnection sınıfı kullanılır.

(16)

Servis Bileşeni ile ilgili linkler

http://developer.android.com/reference/android/app/Service.html http://www.vogella.com/articles/AndroidServices/article.html

http://examples.javacodegeeks.com/android/core/service/android-service- example/

http://www.techotopia.com/index.php/Implementing_an_Android_Started_

Service_%E2%80%93_A_Worked_Example

https://thenewcircle.com/s/post/60/servicesdemo_using_android_services

(17)

(son)

BAŞARILAR …

Referanslar

Benzer Belgeler

Ayrıca dava dilekçesi ve eklerinden yürütmenin durdurulması isteminin yerinde olmadığı anlaşılırsa, davalı idarenin savunması alınmaksızın istem

– Klasik kalorifer sistemlerinde çekilen dört veya daha fazla kolon hattı yerine mobil sistem sayesinde sadece bir kolon hattı çekilir.. Daha az kolon borusu kullanılarak malzeme

• Farklı konfigürasyonlar için oluşturulacak kaynakları kaydetmek için res dizini

Hâlbuki cihazınız çalın- dığında veya kaybolduğunda, eğer daha önceden ge- rekli birtakım önlemleri almamışsanız, kişisel bilgile- rin ve gizlilik derecesi yüksek

Bunları kimisi yıllardır yüzü- nü görmediği veya ayda yılda bir görüşebil- diği arkadaşlarından haber almak için kulla- nıyor, kimi fikir ve düşüncelerini

Yenilenebilir bir enerji kaynağı olan güneş enerjisinden üretilen elektrik enerjisi sayesinde, üretim miktarına göre yapılan yatırımlar , kripto para madenciliği alanında

4.7 KURULUŞ, işbu sözleşme kapsamında TURKCELL tarafından kendisine Platform’a giriş için kullanılmak üzere tahsis edilecek olan kullanıcı adı ve Mobil Eğitim

Araştırma bulgularına dayalı olarak öğrenci kulüp etkinliklerinin; öğretim programında yer alan ortak temel becerileri geliştirilmedeki etkililik düzeyinin hem öğrenciler