почему мой менеджер будильников работает не в то время - PullRequest
0 голосов
/ 07 марта 2019

Я новичок в студии кодирования и Android. и теперь я пытаюсь построить счетчик калорий на Android. Я пытаюсь отправлять данные каждые 12 часов утра (23:59), но происходит то, что каждый раз, когда я принудительно закрываю приложение после 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. Спасибо

1 Ответ

0 голосов
/ 07 марта 2019

Если вы хотите каждый день в 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...