Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
1

Отложенное одноразовое действие по цилкическому таймеру

11.04.2015, 13:57. Показов 919. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возникла такая мысль для оптимизации:

есть флай-панелька (над всеми активити).
Ее можно двигать пальцем. Надо запоминать ее позицию.
Сделал свой реактор OnMove.
В нем пишу в базу позицию.
При частом движении получаю сотню записей/sql запросов (процессор взлетает до 100%), хотя хватило бы раз-два в секунду.

Хочу создавать некий класс-таймер который сработает через секунду. Причем "заказывать" событие можно много раз (подправляя данные для записи или даже без этого - сам получит), но сработает лишь раз. После срабатывания таймер можно "перезапустить". Надо управлять частотой срабатывания.

На моей памяти мне часто нужно было подобное, но не знал как.

Прежде чем городить велосипед, хотелось бы узнать - может такое УЖЕ есть? Как хотя-бы называется такая технология?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2015, 13:57
Ответы с готовыми решениями:

Одноразовое действие в постоянном цикле
У меня в методе имеется постоянный цикл, можно в него что-то запихать чтобы он определённое...

Действие по таймеру
мне нужно в таймере написать событие, через каждые 10 сек, в программе нажимать Alt. Как это...

Выполнить действие по таймеру
Какую функцию нужно использовать, чтобы программа выполнила условие при достижении t. Наподобие...

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

4
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
11.04.2015, 15:00 2
непонятно что за панелька, что за класс, что за реактор
почему надо писать по onMove, а не один раз в момент отпускания ?
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
11.04.2015, 15:48  [ТС] 3
Цитата Сообщение от Паблито Посмотреть сообщение
непонятно что за панелька, что за класс, что за реактор
Это в принципе и не важно! Панелька - моя, реактор тоже я сам написал...
Панелька - "отделеный" вьюв над всеми активити (даже когда все свернуто - полезно для индикаторов, например во время разговора по телефону). Писал сам с нуля. Обрабатываю движение пальцем для таскания панельки по экрану. Написал свой интейфейс-реактор с внейшней функцией OnMove. Она вызывается когда замечено движение хоть на пиксел. Реактора "на отпускание" нет (да и не нужно). И... надо записывать раз в секунду где в текущий момент. Возможно там-же выводить на экран строку с координатами.

Фишка в чем: пикселов ОЧЕНЬ много (разрешение экрана хорошее и в миллиметре может быть большая "погрешность")! Палец тоже может "дрожать" (глаз не замечает, а на самом деле прыгает между 100 и 110) в результате получаем кучу "необходимостей записать" новое состояние. Но нам такая точность не нужна!

Нужно что-то вроде
1) создаю глобальную переменную с классом, отвечающим за запись. В нее передаю через интерфейсы функцию записи координат.
2) посылаю в него команду - "есть изменения - запишись".
3) таймер откладывается на секунду
4) посылаю еще 100 команд. но если таймер еще не сработал - они игнорируются
5) срабатывает таймер. Вызывается внешняя обработка для записи (с текущими координатами). таймер ОСТАНАВЛИВАЕТСЯ.
6) если приходит еще одна команда "есть изменения - запишись", таймер перезапускается еще на секунду.

В результате жуткая экономия процессора! У меня панелька аж "заикается" когда тащу - начинает "прыгать" по экрану, а не ползти плавно.

Может такое УЖЕ есть? Как такое написать с нуля ЗНАЮ, займет миниму часа 3-4 с отладками и тестами, но обидно будет узнать что изобрел велосипед. Вдруг есть плохо документированная ВСТРОЕННАЯ возможность для подобного?
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
11.04.2015, 17:46 4
Цитата Сообщение от Tester64 Посмотреть сообщение
Реактора "на отпускание" нет (да и не нужно).
я дальше не стал читать, ты уж извини
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
11.04.2015, 18:27  [ТС] 5
Цитата Сообщение от Паблито Посмотреть сообщение
я дальше не стал читать, ты уж извини
Не хочешь помогать - не засоряй ветку!

реактор Я писать должен! В "предке"! Я туда вписал только то чем реально пользуюсь. ВНЕШНИЙ реактор на отпускание мышки тоже могу приписать(создавать интерфейс, обрабатывать, назначать), но даже в этом случае мне он не нужен!

Мне нужно выполнять НЕ ЧАСТО обработку при самом движении, а не при отпускании!!!

И мне нужна ТЕХНОЛОГИЯ, а не частное решение!

Это лишь последний раз, когда я "споткнулся" на том что этого нет, а хотелось бы... Помню десяток случаев, когда идет килобайты почти одинакового мусора в логи, когда хотелось бы задавать "назойливость". Когда писал игрушку с бесконечным циклом и при каждом такте получал координаты машинки - не успевал поток текста читать - за секунду до 30-100 строк добавляло...
0
11.04.2015, 18:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2015, 18:27
Помогаю со студенческими работами здесь

Действие по таймеру выполняется в отдельном или общем потоке
Добрый день! Если я ставлю в программу таймер и на tick вешаю функцию, то будет ли на время...

Одноразовое переключение сигнала
Здравствуйте, возник такой вопрос - как организовать одноразовое переключение сигнала? То есть,...

Одноразовое подключение mysqli
Здравствуйте! Раньше был у меня на сайте mysql. Я в хедере делал коннект и все, на любой странице...

Одноразовое выполнение булевской переменной
Здравствуйте, программисты! У меня такая проблема: есть public static bool - переменная onPlatform,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru