4 Ocak 2017 Yazarı yhackup 0

Android Service (Hizmet) Kullanımı

Merhabalar,

Windows’taki Hizmetleri bilirsiniz, arka planda çalışırlar göz önünde bulunmazlar sessiz sedasız işlerini yaparlar.

Service Android’de de kullanılabilir, Servisleri neden kullanacağımıza en basit örnek, kullanıcı uygulamanızı kapattığında dahi servisiniz arkaplanda çalışır. (Ayarlardan uygulamanızın servisini durdurmadığı sürece)

Ve kontrolü doğru yapılmalıdır. bu servis arkaplanda sürekli çalışacağı için telefonun şarjından harcayacaktır.

Android Studio’da aşağıdaki adımlarla hızlıca servis oluşturabilirsiniz.

 

Örnek bir Servis ile 15 saniyede bir Notify basalım, ilk oluşturduğumuzda bazı Constructorlerimiz oluşmamış oluyor aşağıdaki resimdeki gibi kolayca oluşturabiliriz, aşağıdaki kodda yazanları oluşturmamız yeterli şimdilik.

 

Ana Servisimiz bu şekilde,

package com.yhackup.testapk;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class MyNotifyService extends Service {
    public MyNotifyService() {
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }
}

 

 

Şimdi 15 saniyede bir basacağımız bildirimlerin kodunu yazalım, açıklamalar kodda,

    @Override
    public void onCreate() {
        new Thread(new Runnable() {  // Yeni bir Thread (iş parcacığı) oluşturuyorum.
            @Override
            public void run() { // Thread'ım başladığında bitmemesi için while 
                                // ile sonsuz döngüye soktum. senaryo gereği
                while (1 == 1){
                    try {
                        Thread.sleep(15000); // Her döngümde Thread'ımı 15000 ms uyutuyorum. 
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } 
                   // ve 15 saniyem dolduktan sonra bildirimimi basıyorum.
 
                    i++;
                    NotificationManager NM = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                    Notification bildirim;
                    Intent in = new Intent(getApplicationContext(),MainActivity.class);

                    bildirim = new Notification.Builder(getApplicationContext()).
                            setContentTitle("setContentTitle").
                            setContentText("setContentText").
                            setSound(Settings.System.DEFAULT_NOTIFICATION_URI).
                            setVibrate(new long[] {10,500,500,500}).
                            setLights(Color.MAGENTA, 300, 500).
                            setContentIntent(PendingIntent.getActivity(getApplicationContext(), i,in, i)).
                            setSmallIcon(R.drawable.ic_donut_large_black_36dp).
                            setAutoCancel(true).getNotification();
                    NM.notify("notify", i, bildirim);

                }
            }
        }).start();  // burada Thread'ımı başlatıyorum.
    }

Ve servisimizi uygulamamızın onCreate’inde başlatalım.

 Intent NotifyService  = new Intent(MainActivity.this, MyNotifyService.class);
      startService(NotifyService);

Uygulamayı açıp, tekrardan kapatıyoruz. ve servisimiz arka planda 15 saniyede bir bildirim basıyor.

Eğer Servisi,

  • Siz durdurmazsanız,
  • Yazılım hatası olup kendi durmaz ise,
  • Kullanıcı uygulamanızı kaldırmaz ise,
  • Kullanıcı  Ayarlara girip Uygulamanızı durdurmadığı sürece,

Servisimiz arka planda çalışmaya devam edecektir.

 

Saygılarımla,