Compose 함수는 어떤 조건으로 나누는것이 좋을까?(Stateful, stateless)

Compose 함수는 어떠한 조건을 사용해 나누는 것이 좋을까? 고려하면 좋을 것은 무엇일까?

  • 스크린으로 나눈다?
  • 컴포넌트로 나눈다?
  • 무조건 많이 나눈다?

답은 없지만 최소한 어떤 규칙을 가지고 나눌 수 있을지 고민하고 적용한 부분을 정리해 본다.


이 글에서 알아볼 내용

  • 코드의 분리 관점을 무엇으로 볼지를 고민해 본 글이다.
  • 글에 오류가 있을 수 있으니 참고만 하길

Read More

Compose Navigation - WebView Recomposition 해결?

Compose Navigation에서 WebView 활용 시 Recompistion이 발생한다.

  • A Composable에서 WebView를 그린다.
  • B Composable에서 Other Composable을 그린다.

A에서 B로 navigate 했다가 다시 A로 돌아오는 경우 Recomposition이 발생한다.(당연하게도)

Recomposition을 막을 순 없지만 WebView를 유지할 수 있는 방법은 없을까?


이 글에서 알아볼 내용

  • Compose Navigation에서 WebView를 잘 활용하기 위한 방법은?

Read More

Android에서 flow를 통한 실시간 데이터 갱신에 대한 정리

작성한 GitHubUserSearch 소스를 기반으로 flow를 통해 실시간 데이터 갱신하는 방법에 대해 정리해 본다.

이 방식을 사용하면 데이터를 다시 부르기 위한 형태가 필요치 않고, 실시간 데이터를 지속적으로 받을 수 있는 장점이 생긴다.

여기에서 설명하는 코드는 매뉴얼 인젝션을 사용한 코드이다.


이 글에서 알아볼 내용

  • coroutines + flow를 통한 실시간 데이터 갱신

Read More

Kotlin flow의 예외 처리(catch), 재시도(retry, retryWhen) 살펴보기

kotlin coroutines을 활용한 exception은 매우 쉽다.

fun some() {
  viewModelScope.launch {
    try {
      // call suspend function
    } catch(e: Exception) {}
  }
}

launch 안에 try/catch 묶어야 함이 중요하다. coroutines의 장점 역시 우리가 항상 사용하는 함수만 이해하면 코루틴을 활용할 수 있다는 점이다.

그렇다면 Flow에서의 예외 처리는 어떻게 할 수 있을까?

가장 기본적으론 아래와 같이 할 수 있다.

fun some() {
  viewModelScope.launch {
    try {
      flowXXX
        .collect {}
    } catch(e: Exception) {}
  }
}

flow 같진 않지만 flow로 동작하니 일단 넘어가자.


이 글에서 알아볼 내용

  • flow를 활용한 exception 처리
  • catch 활용
  • retry, retryWhen 활용

Read More

이력서를 위한 이력 관리는 어떻게 하는 것이 좋을까?

포트폴리오와 이력서는 어떻게 관리하는 것이 좋을까?

그냥 많은 프로젝트를 진행하고, 많은 활동을 하는 것이 좋을까?

이 글은 지극히 개인적인 생각을 담아 정리하기에 편하게 읽어주시길


이 글에서 알아볼 내용

  • 지극히 개인적인 내용을 담았습니다.

Read More