작성
·
1.3K
·
수정됨
답변 2
0
0
안녕하세요!
중간에 timer가 절대로 null 로 변경되는 로직이 없을거라고 확신한다면 정황상 그렇게 작성 할 수도 있습니다.
하지만 프로그래밍은 나 혼자 하는게 아니기때문에 항상 예외에 주의를 하는게 좋습니다.
감사합니다.
안녕하세요! 생명주기 강의 차트에서 dispose() 함수 및 모든 생명주기가 언제 실행되는지 알려드리고있습니다. dispose()는 State가 완전 삭제될때 실행됩니다. 백그라운드로 보낼때는 위젯이 화면에서 (플러터 런타임기준) 사라지는게 아니기때문에 실행되지 않습니다. 앱을 종료할때도 현재 플러터 프레임워크는 dispose가 실행되지 않는걸로 보입니다. 이 부분은 상식적으로 실행돼야하는 것 같은데 아직 플러터측에서 큰 이슈로 생각하지 않는 것 같네요. 링크 첨부해드립니다. https://github.com/flutter/flutter/issues/28879
이외의 설명은 라이프사이클 강의에서 봐보시면 쉽게 이해하실 수 있을 것 같습니다.
말씀하신 코드는 if(timer == null)의 경우 timer가 null일 경우에 timer를 캔슬하라는 코드이니 로직이 잘못되었습니다. timer가 null 이면 취소할 타이머가 존재하지 않습니다.
안녕하세요, 혹시 dispose()는 언제 작동 되나요? 앱을 백그라운드로 실행했을 때, 앱을 닫았을 때 모두 프린트해서 찍어봤는데 찍혀지지는 않습니다. 그리고 timer란 특정 시간을 설정 후 특정한 실행문을 돌릴 때 작동되는 값같은데 설정하지 않으면 null로 표시됩니다. 그럼
if(timer == null){ timer!.cancel(); }
로 하는 것이 당연할 것 같은데 이 부분은 이해가 되지 않고 강의에서도 설명하지 않은 부분입니다. 좀 설명 부탁드려도 될까요?