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"); 
} 

有些情况下,输入调度会下降输入事件一定的条件:

  1. DROP_REASON_BLOCKED:如果当前的应用程序没有响应和用户轻敲设备,输入事件将被丢弃
  2. DROP_REASON_STALE:丢弃的事件,因为它是陈旧
  3. DROP_REASON_APP_SWITCH:因为逾期应用交换机
  4. 未决的丢弃事件
  5. DROP_REASON_DISABLED:丢弃的事件,因为输入调度被禁用

在你的情况,它的执行情况4.意味着一些事情腥或尚未执行你的第一个输入。所以输入分派器被禁用。

检查[方法dropInboundEventLocked中间件类InputDispatcher.cpp