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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
avvvl
3 / 3 / 0
Регистрация: 16.06.2013
Сообщений: 172
#1

Остановка выполнения таймера (CountDownTimer) из другого класса - Android

28.11.2014, 10:24. Просмотров 1193. Ответов 7
Метки нет (Все метки)

При входе в активити в методе onCreate выполняется таймер:
Java
1
2
3
4
5
6
7
8
9
new CountDownTimer(40000, 1000) {
 
         public void onTick(long millisUntilFinished) {
        ..........................
         }
         public void onFinish() {
             ............................
         }
      }.start();
Если я нажимаю кнопку onBackPressed(возврат на предыдущее активити), то я перейду на старое активити, тем не менее сам таймер выполниться, как бы его заблокировать при переходе? Запретить возврат на предыдущее активити не вариант(сразу говорю).
У меня возникла мысль сделать глобальную переменную типо:
Java
1
public static CountDownTimer count_timer;
И при переходе писать что-то типо Class.count_timer.stop();
Но даже не знаю как запустить с таким раскладом, вот так не пишется: count_timer(40000, 1000)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2014, 10:24     Остановка выполнения таймера (CountDownTimer) из другого класса
Посмотрите здесь:

Android Обращение к элементам активити из другого класса
Android Обращение к методу другого класса
Android Получение данных из другого класса
Импорт класса из другого проекта Android
Получить доступ к EditText из другого класса Android
Замена фрагмента из другого класса Android
Вызов нестатического метода из другого класса Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
28.11.2014, 10:34     Остановка выполнения таймера (CountDownTimer) из другого класса #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Java
1
2
3
4
5
6
7
8
9
10
//В теле класса
CountDownTimer timer;
//В onCreate()
timer = new  CountDownTimer(40000, 1000){
.....
 
};
timer.start
//В onBackPressed
timer.stop();
avvvl
3 / 3 / 0
Регистрация: 16.06.2013
Сообщений: 172
28.11.2014, 10:44  [ТС]     Остановка выполнения таймера (CountDownTimer) из другого класса #3
Там нету метода stop();
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
28.11.2014, 10:46     Остановка выполнения таймера (CountDownTimer) из другого класса #4
avvvl, да, нет такого метода. Используйте cancel().
avvvl
3 / 3 / 0
Регистрация: 16.06.2013
Сообщений: 172
28.11.2014, 11:09  [ТС]     Остановка выполнения таймера (CountDownTimer) из другого класса #5
Еще вопрос, может вы знаете. В onCreate я запускаю поток, который выполнится через определенное время: handler();
Java
1
2
3
4
5
6
7
8
9
10
    private void handler() {
        Handler handler = new Handler(); 
        handler.postDelayed(new Runnable() { 
             public void run() { 
.........................................
             }
 
        }, 5000);
        
    };
И вот когда покидаю активити все равно этот поток выполнится, там включается музыка в фоне(не отдельное активити). может в этом дело?
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
28.11.2014, 11:21     Остановка выполнения таймера (CountDownTimer) из другого класса #6
Java
1
2
3
4
5
6
7
8
9
10
11
12
//В onCreate()
 
static Activity activity = this;
 
handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                if(activity.isTaskRoot()){
                    //тут то что должно сработать в потоке.
                }
            }
        }, 5000);
Вариант не оптимальный конечно, если что-то придумаю получше - напишу.
avvvl
3 / 3 / 0
Регистрация: 16.06.2013
Сообщений: 172
28.11.2014, 12:08  [ТС]     Остановка выполнения таймера (CountDownTimer) из другого класса #7
А если типо проверять через булевую переменную - то это вариант правильней, или лучше уж ваш вариант?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2014, 12:12     Остановка выполнения таймера (CountDownTimer) из другого класса
Еще ссылки по теме:

Доступ к элементам Activity из другого класса Android
Функция activity из другого класса Android
Борьба за TextView при работе с CountDownTimer Android
Android CountDownTimer запуск в цикле
Android Сделать бесконечный CountDownTimer

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

Или воспользуйтесь поиском по форуму:
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
28.11.2014, 12:12     Остановка выполнения таймера (CountDownTimer) из другого класса #8
Нужно получить состояние в момент срабатывания кода, раньше определять какую-то переменную не имеет смысла.
Yandex
Объявления
28.11.2014, 12:12     Остановка выполнения таймера (CountDownTimer) из другого класса
Ответ Создать тему
Опции темы

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