2015년 9월 14일 월요일
SharedPreferences 에서 commit 과 apply 의 차이
안드로이드 스튜디오는 apply 를 쓰라고 해당 코드에 마킹을 해서
뭔 차이가 있나 찾아봤다.
일단 commit 는 (저장이) 성공하면 boolean타입인 true 값을 반환
apply 는 반환값이 없다는게
눈에 보이는 차이점이다.
그러면 단순히 반환값이 있고/없고 인데... 왜 IDE 에서는 apply 를 추천할까.
public abstract boolean commit () -- API 1
public abstract void apply () -- API 9
commit은 API 최초부터 있었던 것이고 apply는 9버젼(2.3)에서 부터 지원했다.
기존에 있던것을 뭔가 보안했기 때문에 새롭게 나온것이다.
눈에 보이지 않는 차이점은 동기/비동기 였던 것이다.
저장공간과 지속적인 동기를 통해 preference 를 작성하던 commit 과 달리
apply는 비동기적으로 반영이 된다는 것이다.
(이는 실패시 어떤 알림을 받을 수 없다는 문제점도 있긴하다)
commit의 동기는 여러분의 method 를 block 하고 write 하기때문에
apply 보다 필연적으로 느릴 수 밖에 없다.
(그렇기 때문에 IDE 는 apply 를 추천(고려)하나보다...)
commit 을 쓰던걸 apply 를 쓰면 저장 속도가 약 10 ~ 30배 까지 빨라진다고 하니
장단점이 있나보다.
피드 구독하기:
댓글 (Atom)
굿입니다
답글삭제감사합니다
답글삭제