본문 바로가기
반응형

개발/Android31

[Android] The emulator process for AVD has terminated 오류 해결 문제 발생 이번에 Android Studio를 업데이트하면서 앱 테스트를 위해 Emulator를 사용했는데 계속 업데이트가 필요하다고 하였습니다. 그래서 최신 버전으로 업데이트를 했는데도 문제가 해결되지 않았습니다. 그래서 Device Manager에서 직접 Emulator를 켰는데 다음과 같은 에러 문구가 떴습니다. The emulator process for AVD has terminated 그리고 해결방법을 찾아보았는데 생각보다 간단하였습니다. 해결 방법 근본적인 문제는 AVD를 실행하기 위한 SDK Tool이 부족해서였습니다. 해결방법은 맥을 기준으로 Tool > SDK Manger를 들어가서 다음 3개의 SDK tools을 다운받아야 합니다. Android Emulator Android SDK.. 2022. 7. 9.
[Android] 백그라운드 작업을 위한 Service (1) - 기본 개념 🔴 개요 백그라운드에서 오래 실행되는 작업을 위한 애플리케이션 컴포넌트 서비스는 크게 3가지 특징이 있습니다. 일반적으로 서비스는 보이지 않는 화면에서 동작합니다. 다른 애플리케이션 구성 요소가 서비스를 시작할 수 있으며 이는 사용자가 다른 애플리케이션으로 전환하더라도 백그라운드에서 동작할 수 있습니다. 구성 요소를 서비스에 바인딩하여 서비스와 상호작용할 수 있다. 우리는 서비스를 통해서 다음과 같은 기능을 백그라운드에서 구현할 수 있습니다. 음악 재생 프로세스 간 통신(IPC) 파일 입출력 네트워크 트랜잭션 크게 서비스는 3가지 유형이 있습니다. (포그라운드, 백그라운드, 바인드) 각 유형의 자세한 내용은 다음 포스팅에서 하나하나 알아봅시다. 🔴 서비스 vs 스레드 (Service, IntentSer.. 2022. 7. 5.
[Android] 리스트 업데이트를 위한 ListAdapter 들어가기 전에, 왜 ListAdapter를 사용하는지 알아봅시다. 일단 RecyclerView에서 일반적으로 아이템을 갱신하기 위해 notfiyItem 메서드를 많이 사용합니다. 하지만 이는 불필요한 아이템들도 일일이 갱신하기 때문에 불필요한 비용이 들어간다는 단점이 있습니다. 여기서 우리는 변경해야 하는 아이템들만 변경해주기 위해서 ListAdapter를 사용합니다. ListAdapter의 기원 DiffUtil ListAdapter를 알아보기 전에 기원이 되는 Util 클래스인 DiffUtil에 대해 알아봅시다. 이름에서 알 수 있듯이 차이와 관련된 클래스인 것 같다는 생각이 드실 겁니다. 맞습니다. 이 클래스는 다음과 같은 역할을 합니다. 두 데이터 셋을 받아서 그 차이를 계산해주는 클래스 DiffU.. 2022. 6. 7.
[Android] LiveData에 대해 알아보자 앞선 글에서 ViewModel에서 알아보았습니다. 이제 우리는 ViewModel이 어떤 역할을 하는지 알고 있습니다. ViewModel을 통해 UI 관련 데이터를 관리해주고 View에 데이터를 그려줄 수 있다는 것을 압니다. 하지만 여기서 문제가 생깁니다. 한 번 그려진 View는 데이터가 변화했다고 일반적으로 다시 그려주지 않습니다. 그렇다고 Activity나 Fragment를 다시 그리기에는 불필요한 비용이 듭니다. 그렇다면 데이터의 변경에 따라 즉각적으로 View의 일부분만을 갱신해줄 수 있는 방법이 무엇이 있을까? 그래서 AAC에서 LiveData를 사용해서 해당 문제를 해결해줄 수 있습니다. (물론 현재는 StateFlow를 많이 사용하는 것 같습니다.) LiveData 정의 LiveData의 .. 2022. 5. 10.
[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.
반응형

loading