스팀 앱 개발기 #153 - 개발 완료: Architecture 개선 작업
개발 완료: Architecture 개선 작업
No. 153
2026. 05. 06 (수) | Written by @dorian-mobileapp
이번 리팩토링은 코드의 일관성을 살리기 위해 그리고 Hilt 적용이 아직 되지 않은 일부 클래스들이 있어 보완 조치하였습니다. 추가 리팩토링은 당분간 더 계속됩니다.
Architecture 개선 작업 요약
작업 개요
ViewModel의 Hilt 적용 통일, collectAsStateWithLifecycle() 교체, 고아 파일 삭제를 진행했습니다.
변경 파일 목록
| 파일 | 변경 내용 |
|---|---|
AccountDetailsFragment.kt | collectAsState() → collectAsStateWithLifecycle() |
PostImagePagerViewModel.kt | @HiltViewModel + @Inject constructor() 추가 |
PostImagePagerActivity.kt | @AndroidEntryPoint 추가 |
ProfileImageViewModel.kt | 삭제 |
AccountDetailsFragment.kt
`// 변경 전
import androidx.compose.runtime.collectAsState
val accountDetailsState = viewModel.accontDetailsState.collectAsState()
AccountDetailsContent(accountDetailsState.value)
// 변경 후
import androidx.lifecycle.compose.collectAsStateWithLifecycle
val accountDetailsState by viewModel.accontDetailsState.collectAsStateWithLifecycle()
AccountDetailsContent(accountDetailsState)`
collectAsState()→collectAsStateWithLifecycle(): Lifecycle을 인식하여 백그라운드 상태에서 불필요한 recomposition 방지by위임으로.value참조 제거
PostImagePagerViewModel.kt
// 변경 전
class PostImagePagerViewModel : ViewModel() { ... }
// 변경 후
@HiltViewModel
class PostImagePagerViewModel @Inject constructor() : BaseViewModel() { ... }
PostImagePagerActivity.kt
// 변경 전
class PostImagePagerActivity : ComponentActivity() { ... }
// 변경 후
@AndroidEntryPoint
class PostImagePagerActivity : ComponentActivity() { ... }
ProfileImageViewModel.kt 삭제
ProfileImageActivity 리팩토링 시 rm 명령이 실패하여 잔류한 고아 파일을 삭제했습니다.
개선 결과
| 항목 | 변경 전 | 변경 후 |
|---|---|---|
collectAsState() 사용 | AccountDetailsFragment | 없음 (전체 통일) |
@HiltViewModel 미적용 ViewModel | PostImagePagerViewModel | 없음 (전체 통일) |
@AndroidEntryPoint 미적용 Activity | PostImagePagerActivity | 없음 (전체 통일) |
GitHub Commit
보다 자세한 코드는 아래 commit을 참고하세요.
- Refactor: Unify Hilt ViewModel injection and replace collectAsState with collectAsStateWithLifecycle
지난 스팀 앱 개발기
Layout provided by Steemit Enhancer hommage by ayogom
안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.
안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!
Upvoted! Thank you for supporting witness @jswit.
🎉 Congratulations!
Your post has been upvoted by the SteemX Team! 🚀
SteemX is a modern, user-friendly and powerful platform built for the Steem community.
🔗 Visit us: www.steemx.org
✅ Support our work — Vote for our witness: bountyking5