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

Roomdatabase 초기값 세팅

0 추천
Roomdatabase를 사용하고 있는데 어플을 실행하면 딱 처음 한 번만 초기화되도록 하고 싶은 데이터들이 있는데요

이런 경우 어떻게 해야 할 지 잘모르겠습니다.

https://developer.android.com/training/data-storage/room/prepopulate?hl=ko

이 문서에 있는 내용은 db파일이 이미 있는 경우만 되는건가요?
ydsfwss (120 포인트) 님이 2021년 9월 29일 질문
다른 방법으로는 초기화용 테이블을 만들어서 초기화가 끝나면 필드를 업데이트 하셔도 될 듯합니다. 이 테이블을 먼저 읽어서 초기화할지 말지 결정하셔도 될 듯. 아니면 초기화가되어야할 테이블을 읽어서 초기화된 데이터가 들어있는지 없는지 체크하셔도 될 것 같구요.
또 다른 방법으로는 아예 초기화된 database를 assets폴더에 배포하고 Room db가 여기를 가리키도록 하는 방법도 있습니다.

2개의 답변

0 추천
효율적인지는 모르겠지만 SharedPreference를 써서 하면 되지 않을까요
MOM (180 포인트) 님이 2021년 9월 29일 답변
0 추천

열러가지 방법이 있을 듯 합니다만, 사용자가 앱 설치 후 최초 실행시에만 해당 동작을 수행하도록 한다고 하면,

안드로이드의 PackageManager에서 PackageInfo를 구해오세요.

public abstract PackageInfo getPackageInfo (String packageName, 
                int flags)

https://developer.android.com/reference/android/content/pm/PackageManager#getPackageInfo(java.lang.String,%20int)

위에서 구한 PackageInfo의 앱설치 시간과 업데이트 시간을 비교하세요.

firstInstallTime
lastUpdateTime

둘의 시간이 같다면 최초 설치, 다르면 앱을 업데이트한 걸로 간주할 수 있습니다. 이제 이 로직을 기반으로 최초 설치의 경우에만 원하시는 데이터를 초기화 해 보세요.

 

spark (227,470 포인트) 님이 2021년 9월 29일 답변
...