안드로이드 키보드 중에 다음의 키보드를 사용할 때,
-
Google 한국어 입력기
-
Android 키보드(AOSP)
안드로이드 os 내부적으로, 다양한 키보드로부터 텍스트 입력을 다르게 받아 들이고 처리하는 과정이 다른데요.
질문 1. 차이가 무엇이고
질문 2. 가능하다면 관련 메소드들의 호출 관계 (어떻게 호출한다거나 막을 수 있는 방법) 를 알고 싶습니다.
Google 한국어 입력기 '한글'의 경우
-
한 글자를 입력할 때마다 setComposingText(text, newCursorPosition) 가 호출
-
엔터를 눌렀을 경우(IME에서) beginBatchEdit() -> commitText(text, newCursorPosition) -> endBatchEdit() 이 두 번 호출 (처음 commitText의 text는 setComposingText 에 들어왔던 텍스트, 다음은 뉴라인)
Google 한국어 입력기 '영어'의 경우
-
한글자를 입력할 때마다 commiText(text, newCursorPosition) 가 호출
-
엔터를 눌렀을 경우(IME에서) onKeyDown -> onEditorAction -> onKeyUp 이 호출
Android 키보드(AOSP)
-
한 글자를 입력할 때마다 beginBatchEdit() -> commitText(text, newCursorPosition) -> endBatchEdit() 이 호출
-
엔터를 눌렀을 경우(IME에서) beginBatchEdit() -> commitText(text, newCursorPosition) -> endBatchEdit() 이 호출 (commitText의 text는 뉴라인)