MODE_MULTI_PROCESS를 대신해서 ContentProvider를 쓰자

0

안드로이드

목록 보기
8/19

참고자료2

저장 Mode를 사용할 때, MODE_MULTI_PROCESS( 이름대로, 멀티 프로세스 용),
MODE_PRIVATE( 현재 프로세스용) 으로 구분해서 사용할 수 있으며, 현재는
MODE_MULTI_PROCESS는 Deprecate 되어 있다

현재는 MODE_MULTI_PROCESS를 대신해서, ContentProvider를 사용하는게 좋다.

공식문서에는 SharedPreference의 동작 형태중 하나인 MODE_MULTI_PROCESS 가 API23 이후로 Deprecated 됐고 앞으로 안드로이드에서도 지원할 생각이 없다고 한다.
MODE_MULTI_PROCESS 에 해당하는 대표적인 예로 안드로이드 UI 컴포넌트와 안드로이드 서비스가 별도의 프로세스로 분리된 경우가 있다. 개발하다보면 안드로이드 액티비티와 서비스가 데이터를 공유해야하는 일이 종종 생기는데 Context와 데이터 이름만 지정하면 얻어올 수 있는 SharedPreference 객체를 사용하는 것이 가장 심플하게 구현할 수 있는 방법이라 자주 사용된다.
액티비티와 서비스가 동일한 프로세스라면 상관 없지만 둘이 별도의 프로세스인 경우엔 실행도중에 동기화 문제가 발생한다. 글쓴이가 몸소 체험한 동기화 문제는.. 서비스를 먼저 실행시킨 다음 액티비티 에서 값을 변경했더니 백그라운드 서비스에서 수정한 값을 읽어오지 않고 예전 값을 계속 읽어오던 일이 있었다. 처음에는 데이터 수정이 제대로 되지 않았는지가 의심스러워 commit() 함수 리턴값만 확인 했었는데 알고보니 별도의 프로세스 환경에서는 사용할 수 없었다. 이것 때문에 몇시간을 잡았는지 모른다.

참고자료
이곳을 참고해 ContentProvider를 구현하여 값을 공유하도록 하자.

profile
쉽게 가르칠수 있도록 노력하자

0개의 댓글