Advertencia de InputConnectionWrapper

Recibo una advertencia de InputConnectionWrapper cada vez que apago la pantalla cuando mi aplicación es visible. No sé por qué, porque no uso InputConnection .

Aquí está la salida LogCat.

 09-07 14:21:31.716: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): beginBatchEdit on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): endBatchEdit on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): beginBatchEdit on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): endBatchEdit on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:32.013: W/IInputConnectionWrapper(24197): showStatusIcon on inactive InputConnection 09-07 14:21:32.013: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): beginBatchEdit on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): endBatchEdit on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 09-07 14:21:32.028: W/IInputConnectionWrapper(24197): beginBatchEdit on inactive InputConnection 09-07 14:21:32.028: W/IInputConnectionWrapper(24197): endBatchEdit on inactive InputConnection 09-07 14:21:32.028: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 

Supongo que ya es demasiado tarde para ayudar, pero es en mi caso el problema que tengo un " setOnEditorActionListener " en un texto de edición – si eliminar este oyente de la advertencia se ha ido.

En mi caso en el diseño del botón que tenía esto: android:textIsSelectable="true" , sólo la eliminación de él y el problema resuelto …

Resultó que el uso anterior de la InputConnectionWrapper era totalmente correcto. Sin embargo, commitText() nunca se llama (excepto casos especiales), ya que hay otros métodos, que se utilizan durante la escritura. Estos son principalmente setComposingText() y sendKeyEvent() .

Sin embargo, también es importante anular los métodos raramente utilizados como deleteSurroundingText() o commitText() para asegurarse de capturar cada entrada de usuario, porque me encontré con un problema similar.

Mi situación: Tengo una vista EditText que el usuario escribe. El EditText se borra cuando el usuario presiona un botón. Muchas entradas de InputConnection inactivas salen cuando InputConnection rápidamente el botón.

Por editText.setText(null); : editText.setText(null);

La última línea en mi logcat anterior proporciona una gran indicación de lo que está sucediendo. Por supuesto, el InputConnection está abrumado con las solicitudes para borrar el texto. Intenté modificar el código para comprobar la longitud del texto antes de intentar borrarlo:

 if (editText.length() > 0) { editText.setText(null); } 

Esto ayuda a mitigar el problema en que al presionar el botón rápidamente ya no provoca el flujo de advertencias IInputConnectionWrapper . Sin embargo, esto sigue siendo propenso a problemas cuando el usuario alterna rápidamente entre escribir algo y presionar el botón o presiona el botón cuando la aplicación está bajo carga suficiente, etc.

Afortunadamente, encontré otra forma de borrar texto: Editable.clear() . Con esto no recibo ninguna advertencia:

 if (editText.length() > 0) { editText.getText().clear(); } 

Tenga en cuenta que si desea borrar todo el estado de entrada y no sólo el texto (autotexto, autocap, multitap, deshacer), puede utilizar TextKeyListener.clear(Editable e) .

 if (editText.length() > 0) { TextKeyListener.clear(editText.getText()); } 

Si desea saber más sobre envoltura de conexión de entrada, visite el siguiente enlace.

http://developer.android.com/reference/android/view/inputmethod/InputConnection.html

  • IInAppBillingService mostrar una advertencia - método getInterfaceDescriptor nunca se utiliza localmente - ¿Cómo eliminar?
  • Extrañas excepciones en android 4.0 con eclipse
  • Recursos de Android ¿Por qué java piensa que la cadena es un número entero?
  • KitKat ART-construcción de advertencia
  • Caída del evento debido a la ventana sin foco
  • ¿Está bien tener tantos métodos obsoletos en el código compatible con versiones anteriores?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.