AccessibilityManagerService
Этот класс создается системой как служба системного уровня и может быть доступна только системе.Задачей этой службы является централизованная отправка событий для {@link AccessibilityEvent}, генерируемых во всех процессах на устройстве.События отправляются в {@link AccessibilityService} s.
Внутри AccessibilityManagerService исходный код.
private void sendAccessibilityEventLocked(AccessibilityEvent event, int userId) {
// Resync to avoid calling out with the lock held
event.setEventTime(SystemClock.uptimeMillis());
mMainHandler.sendMessage(obtainMessage(
AccessibilityManagerService::sendAccessibilityEvent,
this, event, userId));
}
Как вы можете видеть, перед отправкой события вПоток пользовательского интерфейса, они передают SystemClock.uptimeMillis()
в качестве параметра в метод setEventType
.
Кто-нибудь знает, к чему относится возвращаемое значение из getEventTime ()?
getEventTime()
метод возвращает значение, переданное в метод setEventType(time)
.
SystemClock.uptimeMillis ()
общедоступный статический long uptimeMillis ()
Возвращает миллисекунды с момента загрузки, не считая времени, проведенного в глубоком сне.
Обновление: На основании вопроса автора
Если я получаю время загрузки, а затем добавляю uptimeMillis (), это эквивалентно System.currentTimeMillis ()?
Нет, это не так.
С SystemClock документация для Android.
SystemClock.uptimeMillis ()
n миллисекунд с момента загрузки системы.Эти часы останавливаются, когда система переходит в глубокий режим сна (процессор выключен, дисплей не светится, устройство ожидает внешнего ввода), но на него не влияют масштабирование часов, режим ожидания или другие механизмы энергосбережения
System.currentTimeMillis()
- это стандартные «настенные» часы (время и дата), выражающие миллисекунды с начала эпохи.Настенные часы могут быть установлены пользователем или телефонной сетью (см. SetCurrentTimeMillis (long)), поэтому время может непредсказуемо прыгать назад или вперед.Эти часы следует использовать только тогда, когда важна переписка с реальными датами и временем, например, в приложении с календарем или будильником.Для измерения интервала или истекшего времени следует использовать другие часы.Если вы используете System.currentTimeMillis (), попробуйте прослушать трансляции с намерениями ACTION_TIME_TICK, ACTION_TIME_CHANGED и ACTION_TIMEZONE_CHANGED, чтобы узнать, когда время меняется.
Короче говоря, SystemClock.uptimeMillis()
возвращает время загрузки из миллисекунд, он будет сбрасываться каждый раз, когда пользователи выключают телефон и снова перезагружаются.Например, вы включаете телефон через 10 секунд, если вы вызываете этот метод, он вернется (10 * 1000 = 10000), через 20 секунд он будет 20000 и т. Д.
Вс другой стороны, System.currentTimeMillis()
вернет время с Время эпохи в миллисекундах.Он преобразует текущую дату и время в миллисекунды, поэтому это произойдет, если вы измените текущую дату и время в настройках или используете setCurrentTimeMillis(long)
API.