본문 바로가기
반응형

전체 글91

[Android] ViewModel Factory에 관하여 ViewModel을 생성할 때는 일반적으로 2가지 경우가 있습니다. ① 파라미터가 있는 경우 ② 파라미터가 없는 경우 일반적으로 파라미터가 없는 경우는 아래와 같이 사용해주면 됩니다. (lifecycle-extensions 모듈 필요) class SimpleViewModel : ViewModel(){ /** Content **/ } 생성하는 것은 2가지 방법으로 생성이 가능합니다. class MainActivity : AppCompatActivity() { private lateinit var simpleViewModel: SimpleViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState.. 2022. 5. 4.
[Android] Intent와 Bundle 무엇이 다를까? (feat. 객체 전달) 흔히 Activity와 Fragment 간에 데이터를 전달할 때 우리는 Intent와 Bundle을 사용해서 데이터를 전달합니다. 하지만 두 개의 용도는 명확히 다릅니다. Intent는 저장이 아닌 전달하는 수단으로의 객체이고 Bundle은 상태/값 등을 저장하기 위한 객체입니다. Bundle은 Map의 형태로 되어있습니다. Intent에서 데이터를 전달할 때 다음과 같은 두 가지 코드를 보셨을 겁니다. val intent = Intent() intent.putExtra("key","value") val intent = Intent() val bundle =Bundle() bundle.putString("key","value") intent.putExtra("bundle",bundle) 위의 두 코드의 .. 2022. 4. 29.
객체지향의 사실과 오해 - 3장 타입과 추상화 아래 내용은 조영호 님의 "객체지향의 사실과 오해"를 읽고 공부한 내용을 개인적으로 정리하였습니다. 3장. 타입과 추상화 📕 추상화 현실은 복잡하고 혼돈의 덩어리이다. 이를 이해하기 위해 인간이 지니고 있는 인지 능력과 저장공간이 너무나 보잘것이 없다. 그래서 이를 해결하기 위해 인간은 본능적으로 이해하기 쉽고 예측 가능한 수준으로 현실을 분해하고 단순화하는 전략을 따른다. 즉, 추상화란? 불필요한 부분을 무시함으로써 현실에 존재하는 복잡성을 극복하여 어떤 양상, 세부 사항, 구조를 좀 더 명확하게 이해하기 위한 것 그렇다고 무분별하게 불필요한 부분을 제거하면 안된다. 중요한 것은 하려는 목적에 부합하게 불필요한 것을 제거해야 한다. 추상화는 2가치 차원에서 이루어진다. ① 구체적인 사물들 간의 공통점은.. 2022. 4. 27.
[Android] ACC ViewModel이란? - 정의, 사용법, 주의할점 AAC ViewModel이란? 우리는 안드로이드 앱을 설계할 때 MVVM 패턴을 많이 사용합니다. 오늘은 이 MVVM 패턴에서 빠질 수 없는 요소인 ViewModel을 쉽게 구현해주는 AAC의 ViewModel에 대해 알아보려고 합니다. AAC ViewModel을 사용하면 MVVM을 좀 더 쉽게 구현할 수 있습니다. (앞으로 나올 ViewModel은 AAC의 ViewModel을 의미) ViewModel은 액티비티와 프래그먼트에서 사용되는 UI 관련 데이터를 보관하고, 관리하기 위해 디자인되었습니다. 이전에 액티비티가 재생성될 때 데이터를 유지할 수 없었습니다. (예 : 화면 회전) 하지만 ViewModel은 액티비티가 재생성되는 상황에서도 ViewModel 인스턴스를 유지함으로써 데이터를 안전하게 다룰 .. 2022. 4. 16.
[Android] 라이브러리 없이 ImageView에 URL 이미지 표시하기 일반적으로 안드로이드에서 URL로 이미지를 표시할 때 Glide라는 오픈소스 라이브러리를 많이 사용합니다. 이번에는 Glide를 사용하지 않고 URL 이미지를 표시해보려고 합니다. 일단 URL 이미지는 네트워크 통신을 통해 이미지를 다운로드하여 표시를 해야 하기 때문에 비동기 처리가 필요합니다. 비동기 처리를 위해 우리는 MainThread가 아닌 비동기 처리할 Thread를 만들어서 따로 처리를 해주어야 합니다. 이를 위해 Java에서 제공하는 라이브러리인 Executor를 사용했습니다. Executor는 네트워크 IO 통신, 디스크 IO 작업 등 백그라운드에서 작업을 위해 사용합니다. (지금은 Kotlin의 coroutine을 주로 사용합니다.) 그리고 Executor의 newSingleThreadE.. 2022. 4. 8.
[Android] Adapter에서 ViewModel 사용하기 개인 프로젝트를 하던 중, 리스트의 아이템을 삭제하고 변경 사항을 Room에 저장하기 위해 ViewModel을 사용해야 했다. 처음에는 ViewModel의 인스턴스를 adpater 생성 시에 같이 넘겨주려고 생각을 했었다. 하지만 찾아보니 Adapter가 ViewModel의 인스턴스를 가지고 있다면 ViewModel 생명 주기가 더 길기 때문에 메모리 해제가 안 될 수 있기 때문에 웬만하면 adapter에는 표시해줄 데이터만 넘겨주어야겠다는 생각이 들었다. 그래서 callback 함수를 구현해서 이벤트를 넘겨주기로 했다. 이전에 커스텀 다이얼로그를 만들 때 구현해봐서 어렵지 않게 구현할 수 있었다. 준비물은 다음과 같다. (내 실제 코드의 일부분이다. 불필요한 부분들은 모두 삭제했다.) Listener를.. 2022. 3. 30.
반응형

loading