ScheduledExecutorService не запускается

1

У меня есть некоторые проблемы с ScheduledExecutorService. Я хочу начать уведомление через некоторое время. В этом случае его 10 секунд. Но через 10 секунд он не запускается. Все функции, кроме этого, работают правильно.

Вот код:

 ScheduledExecutorService scheduler =
                    Executors.newSingleThreadScheduledExecutor();
                 scheduler.schedule(new Runnable() { 
                   public void run() { 
                       Toast.makeText(BService.this, "It works", Toast.LENGTH_SHORT).show();

                        // Display a notification about us starting.  We put an icon in the status bar.
                        showNotification();
                    } 
                  }, 10, TimeUnit.SECONDS);

Спасибо за помощь Roa

Теги:

2 ответа

4

У меня была такая же проблема, и я узнал, почему. Run() не вызывается в потоке пользовательского интерфейса, и Toast выдает этот поток (но по какой-то неизвестной причине он ничего не дает в LogCat).

Но если вы это сделаете:

task.schedule(new Runnable() {

    @Override
    public void run() {
    runOnUiThread(new Runnable() {

        @Override
        public void run() {
        // your Toas goes in here
        }
    });
    }
}, DURATION, TimeUnit.MILLISECONDS);

это будет работать!

0

ScheduledExecutorService.schedule() вызывается правильно, поэтому я предполагаю, что ваш run() по какой-то причине ошибается. Вы можете добавить журнал при run() чтобы проверить его run() или нет.

  • 0
    Прежде всего, спасибо за ваш ответ, но уведомление Тост - это мой журнал;) Но я нашел другой способ, который работает. new CountDownTimer (1000 * 60 * rand.nextInt (60) + 1000 * 60 * 60, 1000) {public void onTick (long millisUntilFinished) {} public void onFinish () {showNotification (); } }.Начало();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню