2016-12-23 145 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