1. DTO를 위해 data class를 생성해 사용할 때, 패러미터들은 디폴트 값을 지녀야 한다.
2. startActivity()로 새로운 액티비티를 실행할 때, 기존에 쌓여있던 모든 액티비티를 종료하기 위해서는
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_CLEAR_TASK
이와 같이 intent의 플래그를 설정하면 가능하다.
FLAG_ACTIVITY_NEW_TASK: 다른 affinity 값을 가지는 액티비티 호출 시 새로운 task 스택 생성하고 그곳에 생성하는 액티비티 push. 기존의 task 스택들 중 호출하는 액티비티와 affininity 값이 같은 task가 있다면 해당 스택 내로 push 됨 -> 중복되는 액티비티 인스턴스가 스택에 존재할 수 있음
FLAG_ACTIVITY_CLEAR_TOP: 호출하려는 액티비티가 task스택 내에 존재하면, 스택 상 해당 액티비티 위에 있는 액티비티들과 해당 액티비티까지 모두 pop 한 후, 그 액티비티가 스택의 최상위에 위치하도록 하여 생성. 이때 호출된 액티비티는 onCreate()부터 시작.
FLAG_ACTIVITY_CLEAR_TASK: 현재 task를 비워버림.
그런데 레퍼런스를 찾다보니 FLAG_ACTIVITY_CLEAR_TOP 플래그는 필요 없을 거 같아서 빼고 실행해 보았더니, 의도한 대로 동작했다.
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
3. RecyclerView나 ListView 사용 시, View를 재활용하면서 생기는 문제들이 있는데(빠른 스크롤 반복 시, 해당하지 않는 조건의 View 속성이 바뀐다든지)
일단 임시방편으로 어댑터 내의 getView() 메소드에 있던
var view = convertView
if(view == null){
view = LayoutInflater.from(parent?.context).inflate(R.layout.board_list_item, parent, false)
}
이 부분을
var view = convertView
view = LayoutInflater.from(parent?.context).inflate(R.layout.board_list_item, parent, false)
이렇게 바꾸어 해결했다. 그런데 이렇게 해결해버리면 퍼포먼스 측면에서 문제가 생길 거 같아 이 부분에 대해서는 조금 더 찾아봐야 할 거 같다.
'Dev > 안드로이드' 카테고리의 다른 글
[안드로이드 짤막공부] 23.08.01 (0) | 2023.08.01 |
---|---|
[안드로이드 짤막공부] 23.07.21 (0) | 2023.07.22 |
[안드로이드 짤막공부] 23.07.20 (0) | 2023.07.21 |
[안드로이드 짤막 공부] 23.07.17 (0) | 2023.07.18 |
[안드로이드 짤막 공부] 23.07.15 (0) | 2023.07.16 |