본문 바로가기
반응형

Android28

[Android] ListAdapter에서 submitList()가 동작하지 않는 이유 우리는 ListAdapter를 통해 효과적으로 RecyclerView의 데이터를 갱신할 수 있다. 그리고 새로운 데이터를 갱신할 때 submitList() 이용한다. 하지만 분명 데이터는 변경이 되었지만 실제적으로 RecyclerView에 갱신이 안 되는 경우가 있다. 그 이유는 submitList()를 보면 알 수 있다. Why? submitList()를 타고 가다보면 다음과 같은 코드가 있다. (AsynListDiffer.java 안에 submitList 함수) if (newList == mList) { // nothing to do (Note - still had to inc generation, since may have ongoing work) if (commitCallback != null) .. 2022. 3. 10.
[Android] ViewModel 에서 Activity, Fragment 데이터 공유하기 토이 프로젝트를 진행하면서 Android Navigation을 사용했는데 하나의 Activity에 여러 개의 Fragment가 종속되다 보니 데이터를 같이 공유할 필요가 있어서 방법을 찾아보았다. 찾아보니 ViewModel을 통해 Activity와 Fragment 간에 데이터 공유가 가능하다고 하여 적용을 해보았다. 📄 MainActivity.kt class MainActivity : AppCompatActivity() { private val foodViewModel : FoodViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentVie.. 2022. 2. 16.
[Android] 실시간 데이터 처리를 위한 STOMP 사용하기 (Kotlin) 새로운 프로젝트를 하면서 실시간으로 갱신되는 데이터 처리가 필요해서 Web Socket 위에서 동작하는 문자 기반 메세징 프로토콜인 STOMP를 사용했습니다. 이번에는 이 STOMP를 프로젝트에 적용하면서 공부했던 내용들을 정리해보려고 합니다. STOMP를 간단히 설명하면 pub/sub 구조를 이용하여 client와 서버가 통신하는 방법입니다. 기존의 Web Socket은 1:1 통신만이 가능했다면 STOMP는 메시지 브로커가 존재하여 1 : N의 관계를 가질 수 있습니다. Message Broker(메시지 브로커)는 Publisher(송신자)로부터 전달받은 메시지를Subscriber(수신자)로 전달해주는 중간 역할이며 응용 소프트웨어 간에 메시지를 교환할 수 있게 합니다. 그리고 기존에는 WebSock.. 2022. 1. 26.
[Android] 앱, 패키지 설치 여부 확인하기 내 앱에서 다른 앱의 활성화시키려고 할 때 그 앱이 현재 디바이스에 설치가 되어있는지 확인할 필요가 있습니다. 이번에는 PackageManager를 통해 설치 여부를 확인하는 방법을 알아보겠습니다. 아래의 방법을 사용하기 위해서는 기본적으로 앱의 패기지명을 알아야 합니다. 방법 1 val packageName : String = "com.google.android.apps.maps" fun isAppInstalled(packageName : String, packageManager : PackageManager) : Boolean{ return try{ packageManager.getPackageInfo(packageName, 0) true }catch (ex : PackageManager.NameNo.. 2022. 1. 6.
[Android] Fragment에서 View Binding 사용 시 주의사항 안드로이드 공식 문서에서 Fragment의 View Binding 사용에 대하여 다음과 같이 샘플 코드를 제공하고 있습니다. private var _binding: ResultProfileBinding? = null // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { _binding = ResultProfileBinding.inflate(inflater,.. 2022. 1. 3.
[Android] Retrofit - API 통신을 쉽게 구현해보자 Android 개발에서 가장 많이 쓰는 라이브러리라고 하면 Retrofit은 빠질 수 없을 겁니다. 이번에는 이 Retrofit이 정확히 무엇인지 정리해보려고 합니다. Retrofit 홈페이지에 가면 Retrofit을 다음과 같이 정의하고 있습니다. A type-safe HTTP client for Android and Java 번역하면 Android, Java용 Type-Safe HTTP 클라이언트입니다. 즉, 서버와 클라이언트 간 HTTP 통신을 쉽게 해주는 라이브러리입니다. 기본적으로 백그라운드에서 실행되며 callback을 통해 Main Thread에서 UI 업데이트를 간단히 할 수 있습니다. 하지만 보통 이 방법보다는 RxJava, Coroutine와 같이 구현하는 방식을 선호하고 있습니다. (.. 2021. 12. 16.
반응형

loading