2016-12-23 9 views
1

я пишу код в моем MainActivity для повторения сигнала и всякий раз, когда я начинаю свой сигнал тревоги приложение повторил everytime.But я хочу это повторить через каждые 24 часовПовторение тревоги После каждого дня

MainActivity.java

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 
    sessionManager = new SessionManager(this); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    toolbar.setBackgroundColor(getResources().getColor(R.color.black)); 
    setSupportActionBar(toolbar); 
    repeatAlarm(); 
    } 


    private void repeatAlarm() { 
    Date when = new Date(System.currentTimeMillis()); 
    try { 
     Intent someIntent = new Intent(getApplicationContext(), MyReciever.class); // intent to be launched 
     // note this could be getActivity if you want to launch an activity 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, // id, optional 
       someIntent, // intent to launch 
       PendingIntent.FLAG_CANCEL_CURRENT); // PendintIntent flag 
     AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     alarms.setRepeating(AlarmManager.RTC_WAKEUP, when.getTime(), AlarmManager.INTERVAL_DAY, pendingIntent); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

Это работает, когда вы написали свой код. Вы должны проверить, настроен ли будильник, а затем не устанавливать будильник снова. И я вижу, что интервал времени задан Часом, а не Днем. –

+0

Кроме того, вам также необходимо рассмотреть возможность настройки будильника после повторной загрузки. Кроме того, ограничения доз https://developer.android.com/training/monitoring-device-state/doze-standby.html – Raghunandan

ответ

1

Использование PendingIntent.getService

PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, // id, optional 
      someIntent, // intent to launch 
      PendingIntent.FLAG_CANCEL_CURRENT); 

вместо PendingIntent.getBroadcast

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, // id, optional 
      someIntent, // intent to launch 
      PendingIntent.FLAG_CANCEL_CURRENT); 

Подробнее см. Here