마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

sharedprefences 질문 있습니다.

0 추천
배열 변수에, 책 한 권 정도(1500페이지) 분량의 텍스트를 담은 후에,

쉐어리드프리퍼런스에 컨버터해서 단순히 저장, 불러오기만 하려고 하는데요.

이정도면 쉐어리드프리퍼런스가 감당할 수 있는 용량인가요?

용량이 크면 저장, 불러오기할때, 데이터가 망가지거나 할 수도 있나요?

4MB 정도 밖에 안되는 크기라..
상쾌한 (1,890 포인트) 님이 2021년 10월 9일 질문
상쾌한님이 2021년 10월 9일 수정

1개의 답변

+1 추천
 
채택된 답변
쉐어드프퍼런스는 XML 파일입니다. 따라서 구조상 사이즈가 커지면 커질 수록 속도가 떨어지게 됩니다. 그리고 shared preference 는 타입에 안전하지 않습니다. 모든 타입을  내부적으로는 String으로 읽고 쓰고 해서 처리합니다. 그리고 님한테 필요한 부분인데 비동기처리가 약합니다. 파일을 읽고 쓰는 작업은 IO에 해당하므로 네트워크 작업과 마찬가지로 백그라운드 쓰레드에서 처리하는게 좋습니다. 테스트를 먼저 해보시구요, 4MB면 XML로 처리하기에는 좀 부담스러운 크기일 수 있습니다.

대안으로는 DB 와 Jetpack DataStore가 제일 접근이 용이한 방법 같습니다. DB는 Room을 쓰시면 될 것 같은데, 파일 한개 처리하는 용도로는 좀 과한듯 하고, DataStore가 좀 더 적합해 보입니다.

https://developer.android.com/topic/libraries/architecture/datastore

DataStore 에는 두가지 타입이 있는데, 해당 문서를 잘 읽어보시고 적합한 옵션을 선택하시길 바랍니다. 참고로, 읽기/쓰기는 백그운드쓰레드에서 코루틴으로 처리하실 수 밖에 없도록 디자인되어 있어요.

참 Room의 경우는 필요한 DB에 데이터를 미리 넣은 상태로 앱을 배포할 수도 있습니다. 이 부분이 중요하시다면 DB가 더 나은 옵션일 수도 있을 것 같습니다.
spark (224,800 포인트) 님이 2021년 10월 9일 답변
상쾌한님이 2021년 10월 9일 채택됨
감사합니다. 쉐어리드로 해보고, 안되면, 데이터스토어 읽어보고 오겠습니다.
...