3

我正在为android开发ui自动化平台。

出于某种原因,有时(非常罕见的)点击事件可能会被丢弃

当它发生时,我在日志中看到

I/InputDispatcher( 2707): Dropped event because input dispatch is disabled.

请告知可以做些什么来启用输入调度。

先感谢您

4

2 回答 2

1

在某些情况下 Input Dispatcher 会丢弃输入事件:

  1. DROP_REASON_BLOCKED :如果当前应用程序没有响应并且用户正在点击设备,则输入事件将被丢弃
  2. DROP_REASON_STALE:丢弃事件,因为它是陈旧的
  3. DROP_REASON_APP_SWITCH:由于未决的过期应用切换而丢弃的事件
  4. DROP_REASON_DISABLED:由于输入调度被禁用而丢弃的事件

等等

在您的情况下,它的执行情况 4。意味着有些事情变得可疑或您的第一个输入尚未执行。因此输入调度程序被禁用。

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

于 2012-08-02T10:17:09.820 回答
1

仅在屏幕关闭时发生。单击事件正在打开屏幕,但它比打开屏幕更快。

现在,我正在检查屏幕是否关闭并将其打开

//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");
}
于 2012-08-28T15:06:17.653 回答