Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
kvaka
 Аватар для kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
17.07.2012, 13:30     Почему не ввыключается таймер? #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, но как-то это коряво.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2012, 13:30     Почему не ввыключается таймер?
Посмотрите здесь:

Таймер обратного отсчета Android
Не получается создать таймер Android
Таймер не работает Android
Android Таймер
Android Таймер на паузу
Android Таймер и изображение
Зацикленный таймер Android
Одноразовый таймер Android
Таймер Android
Таймер Android
Android Таймер в Java
Android Таймер с вибрацией

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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);
Yandex
Объявления
17.07.2012, 14:02     Почему не ввыключается таймер?
Ответ Создать тему
Опции темы

Текущее время: 19:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru