InputDispatcher:由于输入调度被禁用而丢失事件
问题描述:
我正在开发用于android的ui自动化平台。InputDispatcher:由于输入调度被禁用而丢失事件
出于某种原因,有时(很少见)单击当发生我看到日志事件可以删除
I/InputDispatcher(2707): Dropped event because input dispatch is disabled.
请告知什么可以做,以使能输入调度。
预先感谢您
答
的它只是发生了,当屏幕是关闭的。点击事件正在开启屏幕,但事件比打开屏幕更快。现在
,我检查,如果屏幕关闭,并打开它
//Acquire wake lock in case screen is off
if (PermissionsUtil.checkSelfPermission(getContext(), Manifest.permission.WAKE_LOCK))
{
PowerManager pm = (PowerManager)getContext().getSystemService(Context.POWER_SERVICE);
if (pm.isScreenOn() == false)
{
wakeLock = pm.newWakeLock((PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), TAG);
//
wakeLock.acquire();
Log.d(TAG,"Acquiring wake lock");
}
}
//Do my stuff
//Release wake lock in case it was acquire
if (wakeLock != null && wakeLock.isHeld())
{
wakeLock.release();
wakeLock = null;
Log.d(TAG,"Releasing wake lock");
}
答
有些情况下,输入调度会下降输入事件一定的条件:
- DROP_REASON_BLOCKED:如果当前的应用程序没有响应和用户轻敲设备,输入事件将被丢弃
- DROP_REASON_STALE:丢弃的事件,因为它是陈旧
- DROP_REASON_APP_SWITCH:因为逾期应用交换机 未决的丢弃事件
- DROP_REASON_DISABLED:丢弃的事件,因为输入调度被禁用
等
在你的情况,它的执行情况4.意味着一些事情腥或尚未执行你的第一个输入。所以输入分派器被禁用。
检查[方法dropInboundEventLocked中间件类InputDispatcher.cpp