2015-06-02 5 views
0

В моем мобильном приложении. Мне нужно вызвать BroadcastReceiver, который покажет некоторое всплывающее/системное уведомление.Лучший способ запуска BroadcastReceiver

время запуска этого BroadcastReceiver

  1. Каждый день он должен вызвать в 13:00.
  2. После первого запуска в 13:00. Он должен запускаться каждые 30 секунд.
  3. Он должен прекратить срабатывание каждые 30 секунд после 14:00.

Я попытался следующим образом

Использование 2 BroadcastReceiver в

BroacastReceiver 1 называется использованием AlaramManager

Intent intent = new Intent("broadcast.receiver.one.action"); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, 
      intent, 0); 
    AlarmManager manager = (AlarmManager) context 
      .getSystemService(Context.ALARM_SERVICE); 
    manager.setRepeating(AlarmManager.RTC_WAKEUP, oneAmCalenderObject.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent); 

BroadcastReceiver 1 начнется в 13:00 ежедневно и содержит таймер который начнет BroacastReciever 2 каждые 30 секунд.

timer.schedule(new TimerTask() { 
     public void run() { 
      if (isLessThanTwoPM()) { 
       callBroadcastReceiverTwo(); 
      } else { 
       timer.cancel(); 
      } 

     } 
    }, 0, 30 * (1000 * 1)); 

Я хотел бы знать, если есть лучший способ.

+0

Это очень сумасшествие. Итак, другими словами, вы хотите, чтобы устройство не спало целых один час, и в итоге разрядите большую часть батареи? –

+0

Ну, в соответствии с требованиями наших клиентов нам нужно вытащить данные с сервера каждые 30 секунд в этот час. Примечание. Push-уведомления не являются опцией. – user3616287

+0

для начала трансляции каждые 30 секунд. вы можете настроить alarmmanager на boradcast на 1300, а затем на 1400 для остановки трансляции каждые 30 секунд. Тогда, что вы сделали правильно, но, как сказал Xaver Kapeller, он определенно разрядит аккумулятор устройства. Поэтому предлагалось внедрить push-уведомление с сервера, когда есть обновленные данные, поэтому после получения push-уведомления вы можете получать данные с сервера и делать нужный –

ответ

0

Используйте AlarmManager, где вы можете запланировать время, когда для запуска вещания и до, когда он должен вызвать, а затем вы можете остановить его также

проверить это связывает

First Link

Second Link

+0

Там так много примеров можно найти в google. AlarmManager - лучший способ запуска широковещательного приемника. вам не нужен какой-либо сервис или фоновый процесс для запуска для приемника вещания – Pankaj

+0

, пожалуйста, проверьте мой отредактированный вопрос. Спасибо за ответ. – user3616287

+0

Я дал ответ на основании вопроса, который вы сначала задали, а диспетчер аварийных сообщений - это хороший способ, который вы можете использовать, это проверить эту ссылку, которая является CountDownTimer [Нажмите здесь] (http://developer.android.com/reference/ android/os/CountDownTimer.html) – Pankaj

Смежные вопросы