Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Tester64
397 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
1

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

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

Возникла такая мысль для оптимизации:

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

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

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

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

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

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

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

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

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

4
Pablito
2862 / 2274 / 768
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 1
11.04.2015, 15:00 2
непонятно что за панелька, что за класс, что за реактор
почему надо писать по onMove, а не один раз в момент отпускания ?
0
Tester64
397 / 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
Pablito
2862 / 2274 / 768
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 1
11.04.2015, 17:46 4
Цитата Сообщение от Tester64 Посмотреть сообщение
Реактора "на отпускание" нет (да и не нужно).
я дальше не стал читать, ты уж извини
0
Tester64
397 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
11.04.2015, 18:27  [ТС] 5
Цитата Сообщение от Паблито Посмотреть сообщение
я дальше не стал читать, ты уж извини
Не хочешь помогать - не засоряй ветку!

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

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

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

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

Отложенное проведение
Всем привет. УТ 10.3 8.1. Розница 1.0.14 Собственно надо сделать 2 документа Установка цен, 1й...

Отложенное добавление
У меня в проекте против каждой строки, как и на против строки самого проекта, появился какой-то...

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


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

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

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