앱을 옮기면 키보드 상태가 처음으로 돌아가는 이유
키보드가 화면에서 내려가는 순간 확장이 종료되므로 메모리에만 있던 것은 함께 사라집니다. 무엇이 저장되어 남고 무엇이 매번 처음부터 시작하는지, 그리고 같은 구조가 왜 배터리와 사생활을 함께 설명하는지 정리했습니다.
키보드 확장은 자기 키보드가 화면에서 내려가는 순간 종료됩니다. 그래서 메모리에만 들고 있던 것은 종료와 함께 사라지고, 다음에 올라오는 것은 이전 것을 이어받은 상태가 아니라 처음부터 시작한 새 인스턴스입니다.
키보드가 내려가면 프로세스가 끝납니다
iOS는 입력란이 키보드를 요구할 때 확장을 실행하고, 키보드가 사라질 때 종료합니다. 앱을 옮기든, 입력란을 벗어나든, 메시지를 보내든 결과는 같습니다. 앱 전환기에 남아 있는 앱처럼 멈춘 채 대기하는 것이 아니라 다음에 입력란을 누를 때까지 아예 존재하지 않습니다.
그래서 다음 등장은 직전 상태를 물려받지 않습니다. 이전 인스턴스가 메모리에만 들고 있던 값은 어디에도 기록된 적이 없어 새로 읽어 올 대상도 없습니다. 사라졌다고 느끼는 것들이 대체로 이 부류입니다.
- 눌러 두었던 시프트나 고정된 대문자 상태
- 열어 두었던 이모지나 특수 문자 탭과 그 안의 스크롤 위치
- 메시지 하나에만 쓰려고 켜 둔 입력 스타일
- 떠날 때 열려 있던 키보드 자체의 설정 화면
- 키보드 안쪽 화면에서 치다 만, 입력란으로 넘기지 않은 내용
설정은 남고 화면 상태는 사라지는 이유
차이는 운이 아니라 저장 위치입니다. 테마, 키 소리, 조명 효과, 켜 둔 입력 언어, 소리와 햅틱 스위치 같은 설정은 바꾸는 순간 키보드와 본체 앱이 함께 쓰는 저장 공간에 기록됩니다. 새 인스턴스는 시작할 때 그것을 다시 읽으므로 조금 전과 똑같은 모습으로 올라옵니다.
반면 화면 안쪽의 일시적인 상태는 따로 저장하기로 정하지 않는 한 메모리에만 남습니다. 그리고 그것은 실수라기보다 판단입니다. 테마는 당연히 남아야 하지만, 세 시간 뒤에 다시 열었을 때도 대문자가 고정되어 있다면 초기화되는 쪽보다 나쁩니다.
매번 다시 알려 주는 쪽은 입력란입니다
iOS가 확장의 내부 상태를 대신 복원해 주는 부분은 사실상 없습니다. 대신 실행될 때마다 입력란 쪽의 정보를 넘겨줍니다. 커서 주변의 글자, 요청된 키보드 종류, 리턴 키에 적힐 문구, 자동 대문자 설정 같은 것들입니다. 아무것도 기억하지 못한 채 방금 시작한 키보드에서 영문 문장의 첫 글자가 대문자로 시작하는 것도 그 때문입니다.
같은 구조가 배터리와 사생활을 함께 설명합니다
- 백그라운드 실행이 없습니다. 입력하지 않는 동안에는 돌아가지 않으므로 배터리를 쓸 방법도 없습니다.
- 키보드가 내려가는 즉시 메모리가 시스템으로 반환됩니다. 확장에 걸린 예산이 원래 빠듯하다는 점에서 중요합니다.
- 세션과 세션 사이를 지켜볼 수도 없습니다. 그사이에는 지켜볼 프로세스 자체가 없습니다.
- 대가는 첫 등장에서 치르는 시작 비용과, 저장하지 않기로 한 상태가 사라진다는 점입니다.
앱을 옮겼을 때 고정 대문자가 풀리는 것은 설계대로 동작하는 모습입니다. 반대로 테마나 켜 둔 입력 언어처럼 저장되는 쪽에 있어야 할 값이 매번 사라진다면 그것은 이 구조가 아니라 그 앱의 문제입니다.
자주 묻는 질문
앱을 바꾸면 고정해 둔 대문자가 풀리는 이유가 무엇인가요?
키보드가 화면에서 내려갈 때 확장이 종료되기 때문입니다. 시프트 상태는 메모리에만 있는 값이라 함께 사라지고, 새로 올라온 키보드는 입력란이 알려 주는 규칙에서 다시 시작합니다.
설정은 남는데 열어 둔 이모지 탭은 왜 사라지나요?
설정은 바꾸는 순간 저장 공간에 기록되고 다음 실행 때 다시 읽힙니다. 열려 있던 탭이나 스크롤 위치는 일시적인 화면 상태라, 따로 저장하도록 만들지 않았다면 프로세스와 함께 사라집니다.
메시지를 치지 않는 동안에도 키보드가 백그라운드에서 돌아가나요?
아니요. iOS는 입력란이 키보드를 필요로 할 때 확장을 실행하고 키보드가 사라질 때 종료합니다. 입력하지 않는 동안 배터리를 쓰지 않는 이유가 바로 이것입니다.
그러면 테마도 매번 초기화되나요?
그러면 안 됩니다. 테마는 저장되는 설정이라 키보드가 실행될 때마다 다시 읽힙니다. 정말로 유지되지 않는다면 이 구조 때문이 아니라 결함으로 볼 만한 부분입니다.
내 키보드에서 직접 써보기
Kibo는 진짜 기계식 키음과 다양한 테마, RGB 백라이트 효과를 갖춘 iPhone용 무료 키보드입니다. 계정도 광고도 없고, 전체 접근 권한을 꺼둔 상태에서도 작동합니다.