issues
search
lminsu
/
MovieTrailer
0
stars
0
forks
source link
PagerFragment replace commit()아닌 commintNow() 사용한 이유
#3
Closed
lminsu
closed
1 month ago
lminsu
commented
1 month ago
commit()을 사용하면 IllegalStateException 발생 가능성 존재
만약 transaction이 onSaveInstanceState() 호출 이후 수행되면 IllegalStateException 발생할 수 있음
onSaveInstanceState() 호출 이후 commit()이 수행되면 액티비티 재생성 떄 그 transaction이 저장되지 않음
→ 사용자는 transaction을 수행했다고 생각했는데, 재생성 때는 수행되지 않은 모습을 보여줌
→ 위와 같은 이유로, 위와 같은 상황일 때는 안드로이드 코드에서 익셉션 발생하도록 구현되어 있음
(참고)
https://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html
해결책: commitNow() 또는 commitAllowingStateLoss() 사용
transaction이 유실되도 상관 없으면 commitAllowingStateLoss() 사용
transaction이 수행되는게 꼭 필요하면 commitNow() 사용
단, addToBackstack()이 필요하면 commitNow() 사용 못함
(참고)
https://medium.com/@bherbst/the-many-flavors-of-commit-186608a015b1