我是编码和Android Studio的新手。现在我正在尝试在Android上建立卡路里计数器。我尝试每隔12点在早上(11:59 PM)推送数据,但是发生的事情是,每当我在11:59之后强制关闭应用程序并返回到应用程序(活动)时,都会再次推送数据。我在youtube,stackoverflow和github上看到了很多教程。但是我还没有自动找到一个活动的对象(onCreate()),所以我需要在这里询问。这是我的代码。
MainActivity.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);
}
BroadCastReceiverTester.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启动时起作用。 谢谢
答案 0 :(得分:0)
如果您想每天在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);