Проблемы с сигналами в приложении для Android

У меня есть приложение для сигнализации, которое должно печатать тост-сообщение каждые 1 минуту. Но он делает это только один раз, когда приложение запускается в первый раз.

здесь мой код:

private class ConnectivityReceiver extends BroadcastReceiver{
 MainActivity m= new MainActivity ();
 private Timer mTimer;
 private TimerTask mTimerTask;

 @Override
 public void onReceive(Context context, Intent intent) {
 NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
 PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG"); 
 wl.acquire(); Toast.makeText(context, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show(); // Every 1 minute i print the tost message. wl.release();


 }
 public void SetAlarm(Context context) 
 { 
 AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
 Intent i = new Intent(context, ConnectivityReceiver.class); 
 PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
 am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 1, pi); // Millisec * Second * Minute
 } 
 public void CancelAlarm(Context context) { 
 Intent intent = new Intent(context, ConnectivityReceiver.class); 
 PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
 AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
 alarmManager.cancel(sender); 
 }
 }
2 ответа

Обновите эту строку

am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 1, pi);

в

am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + ( 1000 * 60 ), 1000 * 60 * 10, pi);

Это добавит минуту вашей System.currentTimeMillis(); и начнется после этого времени.


Просто сделайте одно,

в строке PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);

заменить на PendingIntent sender = PendingIntent.getBroadcast(context, **someUniqueId**, intent, 0);

где uniqueId является целым, либо u генерирует или объявляет как "i++", где я является public static int i;

Надеюсь, что это сработает

licensed under cc by-sa 3.0 with attribution.