Soru & Cevap

Alarm Manager Durdurma

13.08.2016 - 12:27

Merhaba,

Bir fragment içerisinde sürekli loop eden bir alarm manager kullanıyorum. Amacım sunucuya sürekli istek atıp bilgi varlığını kontrol etmek.

Bir buton yardımıyla alarmı başlatıyorum. Ayrıca birde alarmı bitirme metodum var bu fragment içinde.

public void startAlarm() {
        manager = (AlarmManager)getActivity().getSystemService(Context.ALARM_SERVICE);
        int interval = 60000;
        int xx = 5000;

        manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, xx, interval, pendingIntent);
        Toast.makeText(getActivity(), "Alarm Başlatıldı", Toast.LENGTH_SHORT).show();
        Log.d("Durum: ", "Başladı.");

    }
public void cancelAlarm() {
        if (manager != null) {
            manager.cancel(pendingIntent);
            Toast.makeText(getActivity(), "Alarm Bitirildi", Toast.LENGTH_SHORT).show();
            Log.d("Durum: ", "Bitti.");
        }
    }

Alarmı broadcast receiver a gönderip oradan da bir servise yönlendiriyorum.

Fragment.java

Intent alarmIntent = new Intent(getActivity(), AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, alarmIntent, 0);

 

Alarmreceiver.java

Intent servis = new Intent(arg0, AlarmServis.class);
        arg0.startService(servis);

 

Servis içinde ise sunucudan bilgiyi çekiyorum ve artık loop eden alarmı durdurmam gerekiyor. İlgili yerde aşağıdaki gibi metodu fragment ten çekip durdurmaya çalışıyorum. Hata yok fakat alarm durdurma işlemini yapmıyor. 

Fragment metod = new Fragment();
metod.cancelAlarm();

Arkaplan servisleri hakkında yeniyim. Yardımcı olabilirseniz sevinirim.

47 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-57989-1451678910.jpg
serdarşen
14.12.2019 - 11:40

Merhaba Emre, Fragment'i yeniden initialize edip cancelAlarm()' ı çağırıyorsun bu yüzden metod çalışmıyor olabilir. Bunu kontrol etmek için, şu Log'u alıyormusun bir bakabilir misin Log.d("Durum: ", "Bitti."); yani manager null' mü değil mi anlamak için.
Yorum Yap