Por que o cursor às vezes pula para uma posição aleatória ao digitar um texto no Android?
Este é um dos meus principais aborrecimentos com o Android. Eu passei algum tempo depurando isso quando estava trabalhando no editor de texto do Quora para Android.
Eu acho que o cerne do problema é que a API do teclado / ponte de conteúdo não está escrita muito bem. Teclados no Android são muitas vezes muito "inteligentes" e fazem substituições de palavras e sugestões para você. Para suportar isso, a interface permite ao teclado mudar a selecção para posições arbitrárias de modo a fazer substituições de palavras e tal.
Um problema com o design que notei é que a comunicação é uma combinação de posições absolutas e posições relativas ao cursor (ver InputConnection | Desenvolvedores Android). Por causa disso, o teclado precisa ter sua própria idéia de como é todo o texto para que possa enviar posições absolutas para a interface. Isto é complicado de manter em sincronia e leva a bugs como o 592162 - Alterar o conteúdo conteúdo conteúdo com o JS durante um evento chave causa problemas de composição no Android.
Comparado com o iOS, digitando no Android muitas vezes parece atrasado ou lento. Eu não tenho certeza qual é a causa disso, mas eu acho que isso piora o problema acima, já que as condições de corrida são ainda mais prováveis.
A implementação iOS de teclados personalizados (App Extension Programming Guide: Custom Keyboard) só usa as posições relativas do cursor, o que parece ser uma idéia muito melhor. iOS lida com a posição do cursor, garantindo que você nunca acabe neste tipo de situação.
Artigos semelhantes
- Como a Índia alcançou a 3ª posição no PIB (PPP) quando ocupa a 9ª posição no PIB (nominal)?
- Que introdução de programa de TV você nunca pula, mesmo quando está assistindo?
- Como falar com uma rapariga aleatória no WhatsApp
- Por que é que às vezes me olho para o espelho e pareço atraente, e depois às vezes fico super feio?