Форум программистов, компьютерный форум, киберфорум
Наши страницы

Перезапуск таймера - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Копирование файла с Android на PC, или синхронизация SQLite http://www.cyberforum.ru/android-dev/thread814620.html
Здравствуйте!!! У меня на телефоне есть база данных (путь до базы /data/data/имя приложения/databases/baza.db). Когда тестировал на эмуляторе то база без проблем копировалась в компьютер,...
Программирование Android Проблемы с прокрукой Доброго времени суток. Вот приказали на работе сделать приложение под Андройд. Надо сделать большую анкету. Конечно в один экран она не помещается. Проблема и возникла при создании вертикальной... http://www.cyberforum.ru/android-dev/thread814593.html
Программирование Android Как вывести древовидную структуру?
Мне ничего в голову нормального не приходит :cry:
BroadcastReceiver и startActivity Программирование Android
У меня есть служба и BroadcastReceiver. Когда приходит событие, то я вызываю startService. Если служба не запущена, то она запускается и ей передается событие. Но если BroadcastReceiver...
Программирование Android Кастомный EditText http://www.cyberforum.ru/android-dev/thread814286.html
Подскажите, каким образом можно реализовать EditText как на скрине, при этом редактирование происходить только правой части знаю что можно в EditText вставить иконку, например "...
Программирование Android Сервер и клиент Хочу написать простенький сервер, который передает с клиента, то есть с телефона, сообщение по нажатию на кнопку. Передает на сервер, который на компьютере. Подскажите с чего начать. Можно... подробнее

Показать сообщение отдельно
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
24.03.2013, 18:51  [ТС]
Цитата Сообщение от lifestyle Посмотреть сообщение
код stopWotk and WorkTimer в студию пжалста...
а вообще с определенного времени я ярый противник таймеров в андроиде, лучше уже handler'ами пользоваться или asynctask'ом...
А вообще мне кажется странной конструкция основного if/else
может создаться два таймера и cancel сработает только на один - на последний... и судя по результатам
такой вариант очень реалистичен. для проверки этой теории добавь след код в метод run:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (m_work != null)
            {
                m_timer = new Timer("Timer on Date "+new Date(System.currentTimeMillis()).toString()); // добавил timestamp  к имени таймера, можешь не переводить его в дату а оставить как числовое значение timestamp
 
                m_timer.schedule(new WorkTimer(number)
                {
                    @Override
                    public void run()
                    {               
        
                        stopWork();
                        sendResult(JsonParser.VAL_START, true);             
                    }
                }, timeout * 1000);                 
            }
а в методе stopWork() добавь строку
Java
1
 Log.d("TIMER_NAME","Timer name is: Thread.currentThread.getName());
и в логе смотри все ли запущенные таймеры остановились и вообще запустился ли один таймер или более и сравни с тем сколько таймеров тебе нужно...
ну примерно так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    private synchronized void stopWork()
    {
        if (m_thread != null)
        {
            try
            {
                m_thread.interrupt();
                m_thread.join();                
            }
            catch (Exception ex)
            {
                Log.e(this.getClass().getName(), ex.getMessage());
            }
            finally
            {
                m_thread = null;
            }                
        }
    }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    private final boolean sendMessage(String number, String msg)
    {
        ArrayList<String> messages = m_smsManager.divideMessage(msg);
        assert(messages.size() == 1) : "Very large message";
        if (messages.size() == 1)
        {
            m_smsManager.sendTextMessage(number, null, msg, null, null);
            return true;            
        }
        return false;
    }
 
    private boolean sendResult(String method, boolean result)
    {
        String cmd = JsonParser.cmdResult(method, result);
        if (cmd == null)
        {
            return false;
        }
        Log.d(this.getClass().getName(), "Base64: " + cmd);
        sendMessage(method, cmd);
        return true;
    }
С логом понял. Попробую...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru