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

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

Войти
Регистрация
Восстановить пароль
 
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Отложенное обновление страницы - C# ASP.NET
Подскажите, возможно ли отложенное обновление ВСЕЙ страницы после отработки Ajax.BeginForm. Т. е. чтобы вывелся результат, а потом...

Отложенное выполнение делегатов - C#
привет всем. Подскажите как сохранить и выполнить делегат с параметрами который будет хранится в бд? Пример: Save<MYfuncs>(f =>...

Отложенное выполнение скрипта PHP - PHP
Здравствуйте, как сделать чтобы отложить выполнение скрипта на несколько секунд? Скрипт редиректинга поставил. Пишу sleep(5); . 5 секунд...

CreateFile отложенное открытие файла - C++
Возможно ли такое? Вообще мне нужно следующее: где-то в коде я подряд открываю 100500 файлов. Открытие файла занимает какое-то (длительное...


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

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

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