3

私はAndroid用のUI自動化プラットフォームを開発しています。

何らかの理由で(非常にまれな)クリックイベントがドロップされることがあります

それが起こったとき、私はログに表示されます

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

入力ディスパッチを有効にするために何ができるかを教えてください。

前もって感謝します

4

2 に答える 2

1

InputDispatcherが入力イベントをドロップする特定の条件があります。

  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 に答える