我是编码和android工作室的新手。现在我正在尝试在android上建立一个卡路里计数器。我尝试每天早上12点(晚上11:59)推送数据,但是每次我在11:59之后强制关闭应用程序并返回到应用程序(活动)时,数据将再次被推送。我在youtube,stackoverflow和github上看到很多教程。但我没有自动找到一个活动的(onCreate()),所以我需要在这里问。这是我的代码。
main activity.Java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_status_body);
//some code
//some code
Calendar calendarGo = Calendar.getInstance();
calendarGo.set(
calendarGo.get(Calendar.YEAR),
calendarGo.get(Calendar.MONTH),
calendarGo.get(Calendar.DAY_OF_MONTH),
23, 59, 59);
setAlarm(calendarGo.getTimeInMillis());
// some code
// some code
}
private void setAlarm(long time){
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, BroadCastReceiverTester.class);
Intent intent1 = new Intent(this, mainActivity.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1321, intent, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,time,AlarmManager.INTERVAL_DAY, pendingIntent);
}
broadcast receiver tester.Java
public class BroadCastReceiverTester extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// some code
// some code
activity activity = new activity(activity_id, activity_name,
activity_minutes_perfomed, activity_calories_burned,
activity_date);
databaseReferenceActivity.child(activity_id).setValue(activity);
}
我想说的是,我希望BroadCastReceiver仅在我设置的时候运行(即23:59:59),但每次onCreate启动时,现实总是有效。谢谢
如果你想每天在12:00,你需要做的是设置如下警报:Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 12);
。
然后像这样设置警报:
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent);