다행입니다. 지금까지 정리하면, 동우님 앱의 핵심 UX 이슈 2개(키보드 인셋/에뮬레이터 SAF URI/내파일-import 등록) 모두 구조적으로 해결된 상태라서, 운영 관점에서도 안정적으로 쓰실 수 있습니다.

추가로 “버그 없이”를 더 확실히 하려면, 아래 3가지만 권장드립니다. (필수는 아닙니다.)

  1. 예외 로그 추가
  • 외부 URI를 열다가 실패할 때 지금은 토스트만 나오는데, Log.e()로 uri, exception을 남기면 추후 재현 어려운 케이스를 잡기 쉽습니다.
  1. 중복 파일명 처리 정책
  • 내 파일에서 같은 이름의 txt를 여러 번 열면 Downloads로 import할 때 충돌할 수 있습니다.
  • “덮어쓰기 / (1) 뒤에 번호 붙이기 / 날짜 suffix” 중 하나로 정책을 고정해 두면 사용자 경험이 안정적입니다.
  1. 대용량 텍스트 성능
  • 수 MB 이상 텍스트에서 OutlinedTextField가 느려질 수 있습니다.
  • 그때는 “파일 로딩/저장 IO를 백그라운드(Dispatchers.IO)”로 유지하고, 텍스트 변경은 debounce 저장(예: 500ms) 정도로만 다듬으면 체감이 좋아집니다.

필요하시면, 위 3가지도 현재 코드 스타일을 유지한 채로 “패치 단위”로 정리해 드리겠습니다.

 


해결되었다니 다행입니다. 불편 포인트가 정확히 “포그라운드 복귀 시 목록 갱신”이라서, 그 부분을 제대로 잡은 게 맞습니다.

다음으로 진행하시려면(유지보수 관점에서) 아래 3가지만 추천드립니다.

  1. 최근 열기(Recents) UX
    • 파일 앱에서 열었든, 앱 내부에서 열었든 “최근 파일”을 상단에 고정해 주면 사용성이 더 좋아집니다.
    • 현재는 Downloads 정렬 기준만으로 보여서 “방금 연 파일”이 아래로 내려갈 수 있습니다.
  2. 중복 등록 방지/정규화
    • 동일한 파일을 여러 경로로 열면(예: 같은 파일을 여러 번 VIEW) Downloads에 복사본이 늘어날 수 있습니다.
    • DISPLAY_NAME + SIZE + LAST_MODIFIED 기준으로 중복을 감지하거나, DocumentFile의 URI를 앱 DB(Room)에 저장해 “원본 URI”로 관리하는 방식이 안정적입니다.
  3. 권한 및 지속 접근(Persistable URI)
    • 파일 앱에서 content:// URI로 들어온 파일은 장기 접근이 끊길 수 있습니다.
    • 가능하면 takePersistableUriPermission()을 적용하고, 앱 재실행 후에도 같은 파일을 열 수 있게 해두면 장기 UX가 좋아집니다.

원하시면 제가 지금 적용된 코드 기준으로,

  • “최근 열기 상단 고정”
  • “중복 복사 방지”
  • “Persistable URI 저장 + 재열기”
    까지 한 번에 정리해서 패치 형태로 드리겠습니다.
반응형

+ Recent posts