1

Since the last 2 months, my SwiftKey keyboard has been at times almost unusable: keystrokes are lost and taps are understood as swipes. This doesn't always happen, and together with the fact that its predictions work so much better than the stock keyboard (also because the stock keyboard's dictionary is much emptier, having been barely used) is the reason why I stuck with SwiftKey until now. Also, I've never been truly sure about the problem being limited to Swiftkey, since using the normal keyboard was frustrating as well.

Now I finally decided to look at the output of logcat, and after trying to type sentences for a while, and seeing plenty of Skipped frames messages (and some other errors[1]). I found this really nasty slowdown:

I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3784.6ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (822.2, 1491.6)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3765.9ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (823.2, 1471.6)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3757.1ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (824.2, 1449.7)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3744.3ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (824.2, 1426.8)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3730.9ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (824.2, 1401.9)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3717.8ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (824.2, 1377.0)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3704.7ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (823.2, 1350.1)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3691.1ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (822.2, 1321.2)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3677.5ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (820.2, 1291.3)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3663.9ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (817.2, 1260.4)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3650.2ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (814.2, 1229.5)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3636.3ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (812.2, 1199.6)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3623.2ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (811.2, 1171.7)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3609.5ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (811.2, 1147.8)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3596.0ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=2, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (811.2, 1128.9)]), policyFlags=0x47000000
I/InputDispatcher(  777): Window 'Window{42b9e6f8 u0 com.touchtype.swiftkey/com.touchtype.settings.TouchTypeKeyboardSettings}' spent 3583.8ms processing the last input event: MotionEvent(deviceId=5, source=0x00001002, action=1, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (811.2, 1128.9)]), policyFlags=0x47000000
I/Choreographer( 1199): Skipped 238 frames!  The application may be doing too much work on its main thread.
I/Choreographer( 1199): Skipped 36 frames!  The application may be doing too much work on its main thread.

Aside from this, most of the system is still butter smooth (not always, but basically never find perceive missing touches as with SwiftKey), and I wouldn't put the blame on the hardware: I always have 1.5 GB of ram free, and the phone I'm using has pretty good hardware, definitely better than the average device (it's an OnePlus 1: Snapdragon 801 and 3GB of RAM)

Is there a way to easily debug this issue as an user, and maybe submit an actionable bug report to SwiftKey (as well as confirming that it's their fault)?

[1]: this is probably unrelated, since it's quite common to see it in unrelated logcats by googling, but here it is:

E/ActivityThread( 1199): Service com.touchtype.telemetry.TelemetryService has leaked ServiceConnection com.touchtype_fluency.service.FluencyServiceProxy$1@45949788 that was originally bound here
E/ActivityThread( 1199): android.app.ServiceConnectionLeaked: Service com.touchtype.telemetry.TelemetryService has leaked ServiceConnection com.touchtype_fluency.service.FluencyServiceProxy$1@45949788 that was originally bound here
E/ActivityThread( 1199):    at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:977)
E/ActivityThread( 1199):    at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:871)
E/ActivityThread( 1199):    at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1625)
E/ActivityThread( 1199):    at android.app.ContextImpl.bindService(ContextImpl.java:1608)
E/ActivityThread( 1199):    at android.content.ContextWrapper.bindService(ContextWrapper.java:517)
E/ActivityThread( 1199):    at com.touchtype_fluency.service.FluencyServiceProxy.onCreate(FluencyServiceProxy.java:88)
E/ActivityThread( 1199):    at com.touchtype.telemetry.handlers.w.<init>(UpgradeActionsHandler.java:40)
E/ActivityThread( 1199):    at com.touchtype.telemetry.handlers.t.a(TelemetryHandlerFactory.java:92)
E/ActivityThread( 1199):    at com.touchtype.telemetry.TelemetryService.a(TelemetryService.java:277)
E/ActivityThread( 1199):    at com.touchtype.telemetry.TelemetryService.a(TelemetryService.java:71)
E/ActivityThread( 1199):    at com.touchtype.telemetry.TelemetryService$b.handleMessage(TelemetryService.java:118)
E/ActivityThread( 1199):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/ActivityThread( 1199):    at android.os.Looper.loop(Looper.java:136)
E/ActivityThread( 1199):    at android.os.HandlerThread.run(HandlerThread.java:61)
  • 1
    Just an idea (no proof on it): Does this slowness only happen when you have a slow internet connection? I'd check in the app's settings if you can turn off that telemetry thingy (expecting a setting like "send anonymized reports" or "send statistics"). Might also well be it tries to check something online (prediction etc.), so watch out for those options as well and "play with them". – Izzy Jun 4 '15 at 10:37
  • Thanks, but unfortunately I don't see any settings to disable that, and the problem doesn't seem to happen only with slow internet connection. – berdario Jun 4 '15 at 13:37
  • 1
    OK, could have been – I might be wrong. So let's wait for other Swiftkey users. Meanwhile: contacting SwiftKey Support might not be a bad idea either. – Izzy Jun 4 '15 at 16:06
  • Yeah, today I also had a look at their help pages, and they don't seem to be terribly promising: "We understand that some of you are experiencing significant lag that these steps do not resolve. This is a known issue and is currently a top priority. " :/ support.swiftkey.com/hc/en-us/articles/… – berdario Jun 4 '15 at 16:50
  • 1
    Yup, the only thing I haven't done yet is clearing the app cache (but if I have the opportunity to actually discover what is causing the problem, I'd rather do that, rather than resorting to clean up the cache periodically) – berdario Jun 4 '15 at 17:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.