[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