Проблемы с сигналами в приложении для 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.