RecyclerView가 뭐길래? Android Developers가 정의하는 RecyclerView는 위와 같다. 즉, 대량의 데이터 세트를 동적으로 생성하여 재사용한다는 것이다. ListView는 notifyDataSetChanged()만 지원한다.즉, 데이터가 하나라도 변경되면 무조건 새로 layout을 inflate하는 것이다. ❓이것이 얼마나 비효율적인것이길래?ListView는 스크롤할 때마다 새로운 항목을 로드할 때 layout inflate를 실행한다.layout inflate는 주로 메인 스레드에서 실행될 뿐만아니라 비동기로 처리되지 않는다. 즉, layout inflate가 실행되면 즉시 layout을 inflate하고, 호출자에게 결과인 뷰를 반환한다.이 과정에서 해당 스레드가 블록되어..
앱을 만들 때 landscape 모드를 고려하기 위해서 몇가지 사항이 있다.가장 크게 고려해야할 사항은 데이터의 보존이다. 만약 세로모드에서 작업한 내용들이 화면을 회전함에 따라 값이 초기화된다면 이는 큰 오류이다. 이것을 보존하기 위해 ViewModel Scope에 대해 알아볼 것이다. Activity 생명주기 Android Developers - 활동 생명 주기 안드로이드 생명주기는 위 그림과 같다. 하지만 여기에 큰 문제가 존재한다. 만약 화면을 가로모드로 바꾸거나 세로모드로 바꾸게 된다면 즉, 화면을 회전하게 되면 onDestory() 가 실행되고 다시 onCreate()가 호출된다. 이것은 화면 회전 시 작업하던 모든 데이터가 초기화 되는 것을 의미한다. 이것을 대비하기 위해서 몇 가지 방법이..
뷰 바인딩이 없다면? 예를 들어 이렇게 TextView가 두 개 있다고 가정하자. class TemplateActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_template) val textView = findViewById(R.id.template_tv1) textView.text = "안녕하세요!" }} 액티비티에서 레이아웃을 가져와 값을 변경하거나 작업을 하려고 한다면 findViewById를 이용하여 XML과 연결해..