Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
#1

Почему не ввыключается таймер?

17.07.2012, 13:30. Просмотров 775. Ответов 1
Метки нет (Все метки)

Есть сервис
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class AttentionService extends Service{      
    public static final String MAKE_PERIODIC_ATTENTION="Make_periodic_attention";   
    private Timer attentionTimer;
    private Handler handler;
    
    @Override
    public void onCreate() {
        attentionTimer=new Timer("attention_timer");        
    };
 
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }   
    
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {                              
        attentionTimer.cancel();    
        attentionTimer=new Timer("attention_timer");
        attentionTimer.scheduleAtFixedRate(callAttention, 3*1000, 10*1000);     
        handler=new Handler();      
        return Service.START_STICKY;        
    }
 
    private TimerTask callAttention=new TimerTask() {       
        @Override
        public void run() {
            handler.post(makeToast);
        }
    };
    
    private  Runnable makeToast=new Runnable() {
        public void run() {         
            Intent intent=new Intent(MAKE_PERIODIC_ATTENTION);
            sendBroadcast(intent);          
            String msg="Attention!!!";
            Toast toast=Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT);
            toast.show();
        }
    };
}
Сервис должен периодически выводить всплывающее сообщение.
Все работает нормально до второго запуска приложения.
При втором запуске выдает ошибку

07-17 09:06:44.867: E/AndroidRuntime(20141): java.lang.RuntimeException: Unable to start service com.work.tapme.AttentionService@48001a50 with Intent { cmp=com.work.tapme/.AttentionService }: java.lang.IllegalStateException: TimerTask is scheduled already

Почему такое происходит, я же предусмотрительно в первую очередь отменяю возможную работу таймера? Я конечно вышел из положения запуская stopService перед startService, но как-то это коряво.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2012, 13:30
Ответы с готовыми решениями:

Не обнуляется таймер почему-то
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:=True;...

почему то не работает таймер на javascript
Скачал страницу отсюда: http://webinar2080.com/fs/index.php?id=14301194&email ...

Почему данные не передаются в таймер?
Хотел сделать таймер, но почему-то мне кажется, что timer1_Tick не передает...

Почему таймер срабатывает несколько раз?
Доброго времени суток, друзья. Нужен таймер, по прошествии которого выполняется...

Почему не работает таймер проверки процесса?
День добрый! Объясните дураку, почему таймер не работает? Что я делаю не так?...

1
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
17.07.2012, 14:02 #2
Цитата Сообщение от kvaka Посмотреть сообщение
attentionTimer.cancel(); attentionTimer=new Timer("attention_timer"); attentionTimer.scheduleAtFixedRate(callAttention, 3*1000, 10*1000);
попробуй так:
сначало если текущий таймертаск не равен нулю - кансели его
создавай новый таск.
вызывай у текущего таймера (если он не равен нулю) метод purge
таймер пересоздавать ненадо
а потом
Java
1
attentionTimer.scheduleAtFixedRate(callAttention, 3*1000, 10*1000);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2012, 14:02

Почему не работает таймер в практически бесконечном цикле?
Вобщем код такой. procedure TForm1.Timer1Stop(Sender: TObject); begin...

Не могу понять почему в моем решении не работает таймер
Уже несколько часов голову ломаю, отладчик ошибок в коде не видит, но что то...

Почему таймер медленнее идет нежели системное время?
Написал таймер с милисекундами, а он идет медлее, напорядок! одна секунда на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru