Android TimerTask в конкретную дату / время - PullRequest
0 голосов
/ 09 января 2012

Хм, я пытаюсь задать вопрос по-другому:)

Я написал код для уведомления об активации в определенную дату / время (класс Date) как локальный (локальная переменная). При активации уведомления я создаю новое уведомление с новой датой / временем.

Код:

private void createNotification(final String contentTitle, final String contentText,
        final String tickerText) {

    calculateVakat();
    setFirstMillis(getNextVakat());

    createStatusBarNotification(contentTitle, contentText, tickerText);

    Notification note = new Notification(android.R.drawable.btn_star_big_on, tickerText, System.currentTimeMillis());

    PendingIntent intent = PendingIntent.getActivity(this, 0, new Intent(this, VaktijaActivity.class), 0);

    note.setLatestEventInfo(this, contentTitle, contentText, intent);

    note.vibrate = new long[] {500L, 200L, 200L, 500L};
    note.defaults |= Notification.DEFAULT_SOUND;

    note.flags |= Notification.FLAG_AUTO_CANCEL;
    notificationManager.notify(NOTIF_ID, note);
}

private void createStatusBarNotification(final String contentTitle,
        final String contentText, final String tickerText) {

    Date date = new Date(getFirstMillis());
    Log.i("date", date.toString());
    Timer timer = new Timer();
    TimerTask timerTask = new TimerTask() {
        @Override
        public void run() {
            createNotification(contentTitle, contentText, tickerText);
        }
    };
    timer.schedule(timerTask, date);
}

В этом случае уведомление активируется каждый раз, когда я устанавливаю приложение с моего компьютера (eclipe), но если я запускаю приложение с мобильного телефона, уведомление «следующее» не будет активным. Может быть, мое приложение не является сервисом, но я не хочу сервис, я хочу приложение с таймером в фоновом режиме.

Если я должен сделать обслуживание, как я могу это сделать?

BR, Колесар

1 Ответ

0 голосов
/ 09 января 2012

Я не уверен, что вы имеете в виду.

АТМ будильника вызовет АТМ, который вы делаете, потому что

Notification note = new Notification(
        android.R.drawable.btn_star_big_on, tickerText,
        System.currentTimeMillis());

вы хотите, чтобы пользователь ввел время, которое вы затем переводите в миллисекунды, а затем говорите как текущее время - время пользователя

и тогда вы не хотите, чтобы сигнал тревоги активировался, когда он срабатывает ??

Intent messagesIntent = new Intent (это MyActivity.class);

перестань работать

Я не уверен, нужна ли вам эта строка с кодом

notificationManager.notify(NOTIF_ID, note);

Тариф, насколько я помню, вызывает тревогу

...