1

I'm releasing 3rd party keyboard application on the Google Play Store.
I received some ANRs like below

Input dispatching timed out (e716b5 InputMethod (server) is not responding. Waited 10001ms for MotionEvent)

 at sun.misc.Unsafe.park (Native method)
  at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos (AbstractQueuedSynchronizer.java:1063)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos (AbstractQueuedSynchronizer.java:1358)
  at java.util.concurrent.CountDownLatch.await (CountDownLatch.java:278)
  at com.android.internal.inputmethod.CancellationGroup$Completable$ValueBase.await (CancellationGroup.java:143)
  at com.android.internal.inputmethod.CancellationGroup$Completable$Values.await (CancellationGroup.java:203)
  at com.android.internal.view.InputConnectionWrapper.getResultOrNull (InputConnectionWrapper.java:100)
  at com.android.internal.view.InputConnectionWrapper.getTextBeforeCursor (InputConnectionWrapper.java:137)
  at func.keyboard.InputAnalyzer.onKeyChar (InputAnalyzer.java:25)
  at ime.BaseIME.callAnalyzer (BaseIME.java:435)
  at ime.LegacyIME.onKeyChar (LegacyIME.java:340)
  at ime.BaseIME.onKey (BaseIME.java:213)
  at manager.KeyInputManager.onKey (KeyInputManager.java:75)
  at common.PointerTracker.detectAndSendKey (PointerTracker.java:544)
  at common.PointerTracker.onUpEvent (PointerTracker.java:390)
  at common.KeyboardBaseView.onUpEvent (KeyboardBaseView.java:2423)
  at common.KeyboardBaseView.sendOnXEvent (KeyboardBaseView.java:2385)
  at ui.keyboard.common.KeyboardBaseView.onTouchEvent (KeyboardBaseView.java:2369)
  at android.view.View.dispatchTouchEvent (View.java:15199)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3920)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3594)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3920)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3594)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3920)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3594)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3920)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3594)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3920)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3594)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3920)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3594)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3920)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3594)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3920)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3594)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3920)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3594)
  at com.android.internal.policy.DecorView.superDispatchTouchEvent (DecorView.java:915)
  at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1957)
  at android.app.Dialog.dispatchTouchEvent (Dialog.java:1162)
  at android.inputmethodservice.SoftInputWindow.dispatchTouchEvent (SoftInputWindow.java:188)
  at com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:873)
  at android.view.View.dispatchPointerEvent (View.java:15458)
  at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:7457)
  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:7233)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6595)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:6652)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:6618)
  at android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:6786)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:6626)
  at android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:6843)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6599)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:6652)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:6618)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:6626)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6599)
  at android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:9880)
  at android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:9718)
  at android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:9671)
  at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:10014)
  at android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:220)
  at android.os.MessageQueue.nativePollOnce (Native method)
  at android.os.MessageQueue.next (MessageQueue.java:335)
  at android.os.Looper.loop (Looper.java:206)
  at android.app.ActivityThread.main (ActivityThread.java:8653)
  at java.lang.reflect.Method.invoke (Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
class InputAnalyzer { 
    ...

    fun onKeyChar(ic: InputConnection) {
        this.ic = ic
        if (!enabled)
            return

        val inputText = ic.getTextBeforeCursor(16, 0) ?: return
        service.themeManager.animateFromText(inputText.toString())
    }
}

When a user send key up event, my keyboard app send a character to EditText and get the text before cursor for word suggestion. And I don't know why this function takes too long time and how to prevent this situation...

Heegyu Kim
  • 11
  • 3
  • Provide full error logs and also try to provide code where you can think error can happen. – Vaibhav Goyal Jun 27 '22 at 06:06
  • @VaibhavGoyal I updated the question, I looked again and the log is strange. dispatchTouchEvent() and dispatchTransformedTouchEvent() called repeatedly... – Heegyu Kim Jun 27 '22 at 07:26

0 Answers0