Question

J'essaie de régler une minuterie pour aujourd'hui (la date est :06/04/2014, et si cela compte, l'heure est 23h25), mais la timerTask n'est pas en cours d'exécution.

mon code est le suivant :

private void makeARemainder() {
                TimerTask timerTask = new RemindAboutEvent();
                // running timer task as daemon thread
                Timer timer = new Timer(true);
                int day = dayOfMonth;
                @SuppressWarnings("deprecation")
                Date when = new Date(2014, Calendar.JUNE, 4);
                timer.schedule(timerTask, when);

            }


class RemindAboutEvent extends TimerTask {
            @Override
            public void run() {
                String title = "Event is comming!";
                String messageBody = info.eventName;
                showNotification(title, messageBody);
            }
        }

J'ai essayé de regarder les messages précédents, mais je n'ai pas compris ce qui ne va pas.

MODIFIER:Je tiens à noter que l'activité se termine après la méthode makeARemainder et que l'application fonctionne toujours, mais qu'une activité différente est en cours d'exécution.

Quelqu'un peut-il expliquer la raison pour laquelle la timerTask ne s'exécute pas ?Merci beaucoup!

Était-ce utile?

La solution 2

J'ai résolu le problème par le code suivant:

private void makeARemainder() {
                TimerTask timerTask = new RemindAboutEvent();
                Timer timer = new Timer(true);
                String when = info.eventDayOfMonth + "/" + info.eventMonth
                        + "/" + info.eventYear + " " + info.eventHour + ":"
                        + info.eventMinute;
                try {
                    timer.schedule(timerTask,
                            (new SimpleDateFormat("dd/MM/yyyy HH:mm")
                                    .parse(when/* "8/6/2014 20:28" */)));
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }

Autres conseils

Ton Date c'est du passé.Assurez-vous que votre date est dans le futur :

// Using this contructor: Date(int year, int month, int day, int hour, int minute, int second)
Date when  = new Date(2014, 6, 4, 13, 45, 00); // This time is in the future for me
// or
Date nowPlus30 = new Date();
timer.schedule(timerTask, now.getTime() + 30 * 1000);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top