Size: a a a

2021 August 25

z

zeroxthree in pro.lua
а как работают экшн лисенеры? они каждую секунду проверяют нажата ли кнопка или нет? затратно ли это, по памяти например?
источник

S

Snusmumriken in pro.lua
Нет.
источник

S

Snusmumriken in pro.lua
Это просто класс, который ты пихаешь в какую-нибудь фигню, и эта фигня уже вызывает функции подписанных классов по событиям.
https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html
источник

S

Snusmumriken in pro.lua
Вот "эта фигня" уже может делать что угодно:  проверять зажата ли клавиша, ловить события ОС (сама операционка отсылает приложениям кучу событий) и так далее.
источник

z

zeroxthree in pro.lua
ну получается же, что программа постоянна такая: "ну может сейчас? нет, ай, ладно, а вот если сейчас, нет, опять, опа, а вот это было нажатие, я ждал".
источник

S

Snusmumriken in pro.lua
Например, есть SDL. Этот SDL держит состояние всех кнопок. Просто массив булеанов на условно 200 значений. Он ловит события winapi (или signals), и изменяет состояние той кнопки, к которой было адресовано событие. Попутно может дёрнуть методы всех подписанных на это событие ивент-листенеров.
источник

z

zeroxthree in pro.lua
просто я не пойму как у меня на мобилке работает сберегающий режим, при этом он может принимать звонки и смски, он же ждет каждую секунду?
источник

S

Snusmumriken in pro.lua
Ох
источник

U

UsernameAK in pro.lua
не-а, ОС присылает события
источник

S

Snusmumriken in pro.lua
ОС у тебя имеет цикл отслеживания всей фигни: "ну может сейчас на GSM-адаптер что-то пришло? Нет? Тогда не буду запускать каскад событий".
источник

U

UsernameAK in pro.lua
когда приходит прерывание, она проверяет от кого оно пришло и переключается в нужный процесс, прислав ему событие
источник

z

zeroxthree in pro.lua
типа, сберегающий режим работает на количество процессов? когда он выключен, у меня ВСЕ приложения ждут событий, а если он включен, то только 2 и за счет этого он держит заряд дольше или как?
источник

S

Snusmumriken in pro.lua
Но в целом - да, оно регулярно ловит кучу разных событий просто ожидая: "Какое-нибудь событие пришло? Да? Запускаем все какашки. А сейчас пришло? Нет? Спим".
источник

S

Snusmumriken in pro.lua
Сберегающий режим тупо ограничивает частоты цп, гп и памяти, и опционально режет некоторые события.
источник

U

UsernameAK in pro.lua
причём "спим" отключает процессор до момента, пока не пришло следующее прерывание
источник

S

Snusmumriken in pro.lua
По таймауту чаще всего, мол, снова всё проверить.
источник

U

UsernameAK in pro.lua
таймаут это тоже прерывание ( ͡° ͜ʖ ͡°)
источник

z

zeroxthree in pro.lua
то есть импульс прерывания запускает что-то извне (например звонок) и только тогда проц просыпается, не ожидая звонка каждую секунду?
источник

S

Snusmumriken in pro.lua
В ОС слишком много разных событий, и куча из них — программные, т.е. в юзерспейсе, его всё равно надо гонять чтобы ловить события сгенерированные прогами-сервисами-демонами.
источник

U

UsernameAK in pro.lua
да, типа того
но при этом его может пробудить что-то другое
источник