[TIL] 2021.02.01 - 2021.02.07
todo
- 클린아키텍처 2독
- 데이터바인딩
- 데이터바인딩 with recyclerview
- mvvm과 데이터바인딩, recyclerview 를 활용한 샘플 todo 앱
- Service lifecycle
- View lifecycle
- observer 패턴
- strategy 패턴
- activity flag
What I learned
-
intArrayOf() -> IntArray -> int[]
-
by viewModels()
-
ViewModelProvider
사용 없이ViewModel
을 지연 생성할 수 있다.// asis private lateinit var viewModel: MainViewModel viewModel = ViewModelProvider(this).get(MainViewModel::class.java) // tobe private val viewModel: MainViewModel by viewModels()
dependencies { implementation "androidx.fragment:fragment-ktx:1.2.5" }
@RequireApi()
vs.@TargetApi()
- 둘 다 런타임에 예외처리를 수행하지는 않으며, 단지 IDE에 알리는 역할을 한다.
- 차이점
@RequireApi()
: 해당 API 버전 이상에서 호출되어야해!- 사용하는 쪽 소스에서 버전 체크를 하지 않으면 알려준다.
@TargetApi()
: 해당 API 버전에서만 호출된다~
-
LiveData: UI 스레드에서는 setValue(), 백그라운드에서는 postValue() 로 값 세팅
-
Activity Flag
-
- FLAG_ACTIVITY_SINGLE_TOP
- history stack에서 최상단에 있다면(동일한 액티비티가 연속으로 호출), 새로 런치되지 않는다.
-
- FLAG_ACTIVITY_CLEAR_TOP
- 기존 스택에 있는 동일한 액티비티를 호출할 경우, 기존의 액티비티(
onNewIntent()
호출됨) 와 그 이전에 history stack에 쌓여있는 액티비티들만 스택에 남기고 나머지는 종료됨. rootActivity만 남기고 제거
internal fun()
-
internal은 같은 모듈 내 가시성
- 전체 애플리케이션이 기본
app
모듈에만 있는 경우internal
은public
과 가시성 차이가 없다. - 예를 들어, 데이터 처리를 위한 별도 모듈이 있고(DB 또는 네트워크 등), 해당 데이터 모듈에서 일부
interface
노출하고 구현은 숨기고자 할때는 internal이 유용할 수 있다. (참고)
- 전체 애플리케이션이 기본
- github 기본 브랜치가
master
에서main
으로 변경되었다. (작년 10월 부터 변경되었다고 한다.)- Minimal-Todo 프로젝트를 푸시하면서 보았다.
Leave a comment