I am developing ui automation platform for android.
For some reason sometimes (very rare) click events can be dropped
When it happen I see in log
It happened only when screen was off. Click event was turning screen on, but it event was quicker than turning screen on.
Now, I am checking if screen is off and turning it on
//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");
}
There are certain conditions in which Input Dispatcher will drop the input events:
etc.
In your case, its executing case 4. Means something going fishy or your first input is not executed yet. So Input Dispatcher is disabled.
Check [method dropInboundEventLocked of middleware class InputDispatcher.cpp